1 #ifndef ALIHLTTPCHWCFCONSISTENCYCONTROLCOMPONENT_H
2 #define ALIHLTTPCHWCFCONSISTENCYCONTROLCOMPONENT_H
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 *
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 )
17 #include "AliHLTProcessor.h"
18 #include "AliHLTComponentBenchmark.h"
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 )
27 * <h2>General properties:</h2>
29 * Component ID: \b TPCHWCFConsistenyControl <br>
30 * Library: \b libAliHLTTPC
31 * Input Data Types: @ref AliHLTTPCDefinitions::fgkHWClustersDataType <br>
32 * Output Data Types: @ref <br>
35 * Mandatory arguments: <br>
36 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
38 * Optional arguments: <br>
39 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
41 * <h2>Default CDB entries:</h2>
44 * @ingroup alihlt_tpc_components
46 class AliHLTTPCHWCFConsistencyControlComponent : public AliHLTProcessor
52 AliHLTTPCHWCFConsistencyControlComponent();
54 virtual ~AliHLTTPCHWCFConsistencyControlComponent();
56 // Public functions to implement AliHLTComponent's interface.
57 // These functions are required for the registration process
59 /** interface function, see AliHLTComponent for description */
60 const char* GetComponentID();
62 /** interface function, see AliHLTComponent for description */
63 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
65 /** interface function, see AliHLTComponent for description */
66 AliHLTComponentDataType GetOutputDataType();
68 /** interface function, see AliHLTComponent for description */
69 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
71 /** interface function, see AliHLTComponent for description */
72 AliHLTComponent* Spawn();
74 /** interface function, see @ref AliHLTComponent for description */
75 void GetOCDBObjectDescription( TMap* const targetMap);
79 // Protected functions to implement AliHLTComponent's interface.
80 // These functions provide initialization as well as the actual processing
81 // capabilities of the component.
83 /** @copydoc AliHLTComponent::DoInit
85 int DoInit( int argc, const char **argv );
87 /** @copydoc AliHLTComponent::DoDeinit
91 /** @copydoc @ref AliHLTComponent::Reconfigure
93 int Reconfigure( const char* cdbEntry, const char* chainId );
95 /** @copydoc @ref AliHLTComponent::ScanConfigurationArgument
97 int ScanConfigurationArgument(int argc, const char** argv);
99 /** @copydoc @ref AliHLTProcessor::DoEvent
101 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
102 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
103 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
106 using AliHLTProcessor::DoEvent;
110 /** copy constructor prohibited */
111 AliHLTTPCHWCFConsistencyControlComponent(const AliHLTTPCHWCFConsistencyControlComponent&);
113 /** assignment operator prohibited */
114 AliHLTTPCHWCFConsistencyControlComponent& operator=(const AliHLTTPCHWCFConsistencyControlComponent&);
116 /** Set default configuration */
117 void SetDefaultConfiguration();
119 /** scan configuration string */
120 int ReadConfigurationString( const char* arguments );
122 /** read configuration from OCDB */
123 int ReadCDBEntry( const char* cdbEntry, const char* chainId );
125 /** read configuration from multiple sources */
126 int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
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