71d7c760 |
1 | // @(#) $Id$ |
2 | |
3 | #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H |
4 | #define ALIHLTTPCCLUSTERFINDERCOMPONENT_H |
a38a7850 |
5 | |
01f43166 |
6 | /* This file is property of and copyright by the ALICE HLT Project * |
7 | * ALICE Experiment at CERN, All rights reserved. * |
71d7c760 |
8 | * See cxx source for full Copyright notice */ |
9 | |
de554e07 |
10 | /** @file AliHLTTPCClusterFinderComponent.h |
11 | @author Timm Steinbeck, Matthias Richter, Jochen Thaeder |
12 | @date |
13 | @brief The TPC cluster finder component. |
14 | */ |
71d7c760 |
15 | |
e67b0680 |
16 | // see below for class documentation |
17 | // or |
18 | // refer to README to build package |
19 | // or |
20 | // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt |
21 | |
71d7c760 |
22 | #include "AliHLTProcessor.h" |
71d7c760 |
23 | |
a38a7850 |
24 | class AliHLTTPCClusterFinder; |
01f43166 |
25 | class AliHLTTPCPadArray; |
e67b0680 |
26 | class AliHLTTPCDigitReader; |
71d7c760 |
27 | |
84645eb0 |
28 | /** |
29 | * @class AliHLTTPCClusterFinderComponent |
30 | * Implementation of the cluster finder component. |
31 | * The component implements the interface methods of the @ref AliHLTProcessor. |
32 | * The actual cluster finding algorithm is implemented in @ref AliHLTTPCClusterFinder. |
de554e07 |
33 | * The component can handle unpacked and packed data of different formats via the |
34 | * AliHLTTPCDigitReader implementations. Two components are registered, the |
35 | * TPCClusterFinderUnpacked and the TPCClusterFinderPacked. The latter one can |
36 | * instantiate different digit readers depending on the arguments. |
84645eb0 |
37 | * |
38 | * The component has the following component arguments: |
01f43166 |
39 | * - rawreadermode the mode for the @ref AliHLTTPCDigitReaderRaw, use -2 if using unsorted |
84645eb0 |
40 | * - adc-threshold ADC count threshold for zero suppression, if <0 the base line |
41 | * calculation and subtraction is switched off |
42 | * - pp-run set parameters specific to a pp run; currently this switches |
01f43166 |
43 | * cluster deconvolution off for pp runs (not true for unsorted reading) |
44 | * - unsorted if 1 the data will be read unsorted in to a PadArray object. This should |
45 | * only be done on patch level since it use a lot of memory |
46 | * - patch specify on which patch to resd the data unsorted |
84645eb0 |
47 | * |
48 | * @ingroup alihlt_tpc |
49 | */ |
71d7c760 |
50 | class AliHLTTPCClusterFinderComponent : public AliHLTProcessor |
51 | { |
52 | public: |
74c73e5a |
53 | /** |
54 | * constructor |
55 | * @param packed whether to use the packed or unpacked reader |
56 | */ |
a38a7850 |
57 | AliHLTTPCClusterFinderComponent(bool packed); |
74c73e5a |
58 | /** destructor */ |
71d7c760 |
59 | virtual ~AliHLTTPCClusterFinderComponent(); |
60 | |
61 | // Public functions to implement AliHLTComponent's interface. |
62 | // These functions are required for the registration process |
63 | |
5df0cbb9 |
64 | /** interface function, see @ref AliHLTComponent for description */ |
65 | const char* GetComponentID(); |
66 | /** interface function, see @ref AliHLTComponent for description */ |
67 | void GetInputDataTypes( vector<AliHLTComponentDataType>& list); |
68 | /** interface function, see @ref AliHLTComponent for description */ |
69 | AliHLTComponentDataType GetOutputDataType(); |
70 | /** interface function, see @ref AliHLTComponent for description */ |
64defa03 |
71 | int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList); |
72 | /** interface function, see @ref AliHLTComponent for description */ |
5df0cbb9 |
73 | virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); |
74 | /** interface function, see @ref AliHLTComponent for description */ |
75 | AliHLTComponent* Spawn(); |
a655eae3 |
76 | |
71d7c760 |
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 | int DoInit( int argc, const char** argv ); |
84 | int DoDeinit(); |
8ede8717 |
85 | int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, |
86 | AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, |
87 | AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks ); |
c3cda394 |
88 | int Reconfigure(const char* cdbEntry, const char* chainId); |
71d7c760 |
89 | |
5d2abf3b |
90 | using AliHLTProcessor::DoEvent; |
91 | |
71d7c760 |
92 | private: |
a1dbf058 |
93 | /** copy constructor prohibited */ |
94 | AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&); |
95 | /** assignment operator prohibited */ |
96 | AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&); |
db16520a |
97 | /** the cluster finder object */ |
2a083ac4 |
98 | AliHLTTPCClusterFinder* fClusterFinder; //!transient |
db16520a |
99 | /** the reader object for data decoding */ |
2a083ac4 |
100 | AliHLTTPCDigitReader* fReader; //!transient |
71d7c760 |
101 | |
e67b0680 |
102 | bool fClusterDeconv; //!transient |
103 | float fXYClusterError; //!transient |
104 | float fZClusterError; //!transient |
2a083ac4 |
105 | /** |
106 | * switch to indicated the reader |
107 | * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType" |
108 | * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType" |
109 | */ |
110 | Int_t fPackedSwitch; // see above |
a38a7850 |
111 | |
01f43166 |
112 | /* |
113 | * Reads the data the new unsorted way if true |
114 | * |
115 | */ |
116 | Int_t fUnsorted; //!transient |
117 | |
118 | /* |
119 | * Patch number to be read, currently given as component argument, |
120 | * will be changed later. |
121 | */ |
122 | Int_t fPatch; //!transient |
123 | |
b1c46961 |
124 | /* |
125 | * Switch to specify if one ship out a list of active pads. |
126 | * Used for the 2007 December run. |
127 | */ |
128 | Int_t fGetActivePads; //!transient |
129 | |
01f43166 |
130 | /* |
131 | * Pointer to a PadArray object containing a double array of all the pads in |
132 | * the current patch. |
133 | */ |
134 | AliHLTTPCPadArray * fPadArray; //!transient |
135 | |
b1c46961 |
136 | ClassDef(AliHLTTPCClusterFinderComponent, 2) |
71d7c760 |
137 | |
138 | }; |
139 | #endif |