]>
Commit | Line | Data |
---|---|---|
33861fe0 | 1 | //-*- Mode: C++ -*- |
2 | // $Id$ | |
c012881c | 3 | #ifndef ALIHLTTPCHWCFEMULATORCOMPONENT_H |
4 | #define ALIHLTTPCHWCFEMULATORCOMPONENT_H | |
5 | ||
6 | //* This file is property of and copyright by the ALICE HLT Project * | |
7 | //* ALICE Experiment at CERN, All rights reserved. * | |
8 | //* See cxx source for full Copyright notice * | |
9 | ||
10 | // @file AliHLTTPCHWCFEmulatorComponent.h | |
11 | // @author Sergey Gorbunov <sergey.gorbunov@fias.uni-frankfurt.de> | |
12 | // @author Torsten Alt <talt@cern.ch> | |
13 | // @brief HLT Component interface for for FPGA ClusterFinder Emulator for TPC | |
14 | // @brief ( see AliHLTTPCHWCFEmulator class ) | |
15 | // @note | |
16 | ||
17 | ||
18 | ||
19 | #include "AliHLTProcessor.h" | |
20 | #include "AliHLTComponentBenchmark.h" | |
21 | #include "AliHLTTPCHWCFSupport.h" | |
22 | #include "AliHLTTPCHWCFEmulator.h" | |
23 | ||
24 | class AliHLTTPCHWCFEmulator; | |
25 | class AliHLTTPCDigitReader; | |
26 | class AliTPCTransform; | |
27 | ||
28 | /** | |
29 | * @class AliHLTTPCHWCFEmulatorComponent | |
30 | * The FPGA clusterfinder emulator for TPC | |
31 | * The component implements the interface methods of the @ref AliHLTProcessor | |
32 | * The actual cluster finding algorithm is implemented in @ref AliHLTTPCHWCFEmulator | |
33 | * | |
34 | * <h2>General properties:</h2> | |
35 | * | |
36 | * Component ID: \b TPCHWClusterFinderEmulator <br> | |
37 | * Library: \b libAliHLTTPC | |
38 | * Input Data Types: @ref kAliHLTDataTypeDDLRaw or AliHLTTPCDefinitions::fgkUnpackedRawDataType <br> | |
39 | * Output Data Types: @ref AliHLTTPCDefinitions::fgkHWClustersDataType and AliHLTTPCDefinitions::fgkAliHLTDataTypeClusterMCInfo <br> | |
40 | * | |
41 | * | |
42 | * Mandatory arguments: <br> | |
43 | * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting --> | |
44 | * | |
45 | * Optional arguments: <br> | |
46 | * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting --> | |
47 | * \li -deconvolute <br> | |
48 | * Turns on deconvolution. | |
49 | * \li -do-mc <br> | |
50 | * Provide mc labels for found clusters | |
51 | * | |
52 | * <h2>Default CDB entries:</h2> | |
53 | * None | |
54 | * | |
55 | * @ingroup alihlt_tpc_components | |
56 | */ | |
57 | class AliHLTTPCHWCFEmulatorComponent : public AliHLTProcessor | |
58 | { | |
59 | public: | |
60 | /** | |
61 | * constructor | |
62 | */ | |
63 | AliHLTTPCHWCFEmulatorComponent(); | |
64 | /** destructor */ | |
65 | virtual ~AliHLTTPCHWCFEmulatorComponent(); | |
66 | ||
67 | // Public functions to implement AliHLTComponent's interface. | |
68 | // These functions are required for the registration process | |
69 | ||
70 | /** interface function, see AliHLTComponent for description */ | |
71 | const char* GetComponentID(); | |
72 | ||
73 | /** interface function, see AliHLTComponent for description */ | |
74 | void GetInputDataTypes( vector<AliHLTComponentDataType>& list); | |
75 | ||
76 | /** interface function, see AliHLTComponent for description */ | |
77 | AliHLTComponentDataType GetOutputDataType(); | |
78 | ||
79 | /** interface function, see AliHLTComponent for description */ | |
80 | int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList); | |
81 | ||
82 | /** interface function, see AliHLTComponent for description */ | |
83 | virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); | |
84 | ||
85 | /** interface function, see AliHLTComponent for description */ | |
86 | AliHLTComponent* Spawn(); | |
87 | ||
88 | /** interface function, see @ref AliHLTComponent for description */ | |
89 | void GetOCDBObjectDescription( TMap* const targetMap); | |
90 | ||
91 | protected: | |
92 | ||
93 | // Protected functions to implement AliHLTComponent's interface. | |
94 | // These functions provide initialization as well as the actual processing | |
95 | // capabilities of the component. | |
96 | ||
97 | /** @copydoc AliHLTComponent::DoInit | |
98 | */ | |
99 | int DoInit( int argc, const char **argv ); | |
100 | ||
101 | /** @copydoc AliHLTComponent::DoDeinit | |
102 | */ | |
103 | int DoDeinit(); | |
104 | ||
105 | /** @copydoc @ref AliHLTComponent::Reconfigure | |
106 | */ | |
107 | int Reconfigure( const char* cdbEntry, const char* chainId ); | |
108 | ||
109 | /** @copydoc @ref AliHLTComponent::ScanConfigurationArgument | |
110 | */ | |
111 | int ScanConfigurationArgument(int argc, const char** argv); | |
112 | ||
113 | /** @copydoc @ref AliHLTProcessor::DoEvent | |
114 | */ | |
115 | int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, | |
116 | AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, | |
117 | AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks ); | |
118 | ||
119 | ||
120 | using AliHLTProcessor::DoEvent; | |
121 | ||
122 | private: | |
123 | ||
124 | /** copy constructor prohibited */ | |
125 | AliHLTTPCHWCFEmulatorComponent(const AliHLTTPCHWCFEmulatorComponent&); | |
126 | ||
127 | /** assignment operator prohibited */ | |
128 | AliHLTTPCHWCFEmulatorComponent& operator=(const AliHLTTPCHWCFEmulatorComponent&); | |
129 | ||
130 | /** Set default configuration */ | |
131 | void SetDefaultConfiguration(); | |
132 | ||
133 | /** scan configuration string */ | |
134 | int ReadConfigurationString( const char* arguments ); | |
135 | ||
136 | /** read configuration from OCDB */ | |
137 | int ReadCDBEntry( const char* cdbEntry, const char* chainId ); | |
138 | ||
139 | /** read configuration from multiple sources */ | |
140 | int Configure( const char* cdbEntry, const char* chainId, const char *commandLine ); | |
141 | ||
142 | Bool_t fDoDeconvTime; // flag to deconvolute in time direction | |
143 | Bool_t fDoDeconvPad; // flag to deconvolute in pad direction | |
144 | Bool_t fDoMC; // flag to provide MC labels | |
145 | Bool_t fDoFlowControl; // flag to control the data | |
146 | Bool_t fDoSinglePadSuppression; // flag for single pad suppression | |
147 | Bool_t fBypassMerger; // flag to bypass cluster merging between pads | |
ef19b824 | 148 | AliHLTUInt32_t fClusterLowerLimit; // cut clusters at this charge value |
149 | AliHLTUInt32_t fSingleSeqLimit; // cut sequences at this charge value | |
150 | AliHLTUInt32_t fMergerDistance; // max. distance in mean time between two pads to be merged | |
25080052 | 151 | bool fUseTimeBinWindow; // use timebin window |
4d67c3e3 | 152 | bool fUseTimeFollow; // use time follow algorithm for merging pads |
ef19b824 | 153 | AliHLTUInt32_t fChargeFluctuation; // allowed charge fluctuation for peak finding |
c012881c | 154 | Int_t fDebug; // debug level |
155 | AliHLTTPCHWCFSupport fCFSupport; // !transient | |
156 | AliHLTTPCHWCFEmulator fCFEmulator; // !transient | |
157 | AliHLTComponentBenchmark fBenchmark; // benchmark | |
158 | ||
159 | }; | |
160 | #endif |