]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/HWCFemulator/AliHLTTPCHWCFEmulatorComponent.h
CMake: Retrieve Git information
[u/mrichter/AliRoot.git] / HLT / TPCLib / HWCFemulator / AliHLTTPCHWCFEmulatorComponent.h
CommitLineData
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
24class AliHLTTPCHWCFEmulator;
25class AliHLTTPCDigitReader;
26class 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 */
57class 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