]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/HWCFemulator/AliHLTTPCHWCFConsistencyControlComponent.h
CMake: Retrieve Git information
[u/mrichter/AliRoot.git] / HLT / TPCLib / HWCFemulator / AliHLTTPCHWCFConsistencyControlComponent.h
1 #ifndef ALIHLTTPCHWCFCONSISTENCYCONTROLCOMPONENT_H
2 #define ALIHLTTPCHWCFCONSISTENCYCONTROLCOMPONENT_H
3
4 //* This file is property of and copyright by the ALICE HLT Project        * 
5 //* ALICE Experiment at CERN, All rights reserved.                         *
6 //* See cxx source for full Copyright notice                               *
7
8 //  @file   AliHLTTPCHWCFConsistencyControlComponent.h
9 //  @author Sergey Gorbunov <sergey.gorbunov@fias.uni-frankfurt.de>
10 //  @author Torsten Alt <talt@cern.ch> 
11 //  @brief  Comparison of TPC clusters produced by FPGA clusterfinder and by FPGA Emulator 
12 //  @brief  ( see AliHLTTPCHWCFEmulator class )
13 //  @note
14
15
16
17 #include "AliHLTProcessor.h"
18 #include "AliHLTComponentBenchmark.h"
19 class TH1F;
20
21 /**
22  * @class AliHLTTPCHWCFConsistencyControlComponent
23  * The FPGA clusterfinder emulator for TPC
24  * Comparison of TPC clusters produced by FPGA clusterfinder and by FPGA Emulator
25  * ( see AliHLTTPCHWCFEmulator class )
26  *
27  * <h2>General properties:</h2>
28  *
29  * Component ID: \b TPCHWCFConsistenyControl <br>
30  * Library: \b libAliHLTTPC
31  * Input Data Types: @ref  AliHLTTPCDefinitions::fgkHWClustersDataType <br>
32  * Output Data Types: @ref  <br> 
33  *
34  *
35  * Mandatory arguments: <br>
36  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
37  *
38  * Optional arguments: <br>
39  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40  *
41  * <h2>Default CDB entries:</h2>
42  * None
43  *
44  * @ingroup alihlt_tpc_components
45  */
46 class AliHLTTPCHWCFConsistencyControlComponent : public AliHLTProcessor
47 {
48  public:      
49   /**
50    * constructor 
51    */
52   AliHLTTPCHWCFConsistencyControlComponent();
53   /** destructor */
54   virtual ~AliHLTTPCHWCFConsistencyControlComponent();
55   
56   // Public functions to implement AliHLTComponent's interface.
57   // These functions are required for the registration process
58
59   /** interface function, see AliHLTComponent for description */
60   const char* GetComponentID();
61
62   /** interface function, see AliHLTComponent for description */
63   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
64
65   /** interface function, see AliHLTComponent for description */
66   AliHLTComponentDataType GetOutputDataType();
67
68   /** interface function, see AliHLTComponent for description */
69   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
70
71   /** interface function, see AliHLTComponent for description */
72   AliHLTComponent* Spawn();
73
74   /** interface function, see @ref AliHLTComponent for description */
75   void GetOCDBObjectDescription( TMap* const targetMap);
76
77  protected:
78   
79   // Protected functions to implement AliHLTComponent's interface.
80   // These functions provide initialization as well as the actual processing
81   // capabilities of the component. 
82   
83      /** @copydoc AliHLTComponent::DoInit
84       */
85     int DoInit( int argc, const char **argv );
86
87     /** @copydoc AliHLTComponent::DoDeinit
88      */
89     int DoDeinit();
90
91     /**  @copydoc @ref AliHLTComponent::Reconfigure
92      */
93     int Reconfigure( const char* cdbEntry, const char* chainId );
94
95     /**  @copydoc @ref AliHLTComponent::ScanConfigurationArgument
96      */
97     int ScanConfigurationArgument(int argc, const char** argv);
98
99     /** @copydoc @ref AliHLTProcessor::DoEvent
100      */
101     int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
102                  AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
103                  AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
104
105      
106     using AliHLTProcessor::DoEvent;
107   
108  private:
109
110   /** copy constructor prohibited */
111   AliHLTTPCHWCFConsistencyControlComponent(const AliHLTTPCHWCFConsistencyControlComponent&);
112
113   /** assignment operator prohibited */
114   AliHLTTPCHWCFConsistencyControlComponent& operator=(const AliHLTTPCHWCFConsistencyControlComponent&);
115
116   /** Set default configuration */
117   void SetDefaultConfiguration();
118
119   /** scan configuration string */
120   int ReadConfigurationString(  const char* arguments );
121
122   /** read configuration from OCDB */
123   int ReadCDBEntry( const char* cdbEntry, const char* chainId );
124
125   /** read configuration from multiple sources */
126   int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
127
128   AliHLTUInt64_t fNDismatch;// N inconsistent data blocks
129   AliHLTUInt64_t fNBlocks;// N of data blocks processed
130   AliHLTComponentBenchmark fBenchmark; // benchmark
131   TH1F *fHistHeaderAll; // checked parameters of block headers
132   TH1F *fHistHeaderGood; // consistent parameters of block headers
133   TH1F *fHistClusterAll; // checked parameters of clusters
134   TH1F *fHistClusterGood; // consistent parameters of clusters
135   TH1F *fProfHeader; // ratio of good headers
136   TH1F *fProfCluster; // ratio of good clusters
137 };
138 #endif