3 #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
4 #define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
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 */
10 /** @file AliHLTTPCClusterFinderComponent.h
11 @author Timm Steinbeck, Matthias Richter, Jochen Thaeder
13 @brief The TPC cluster finder component.
16 // see below for class documentation
18 // refer to README to build package
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22 #include "AliHLTProcessor.h"
24 class AliHLTTPCClusterFinder;
25 class AliHLTTPCPadArray;
26 class AliHLTTPCDigitReader;
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.
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.
38 * The component has the following component arguments:
39 * - rawreadermode the mode for the @ref AliHLTTPCDigitReaderRaw, use -2 if using unsorted
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
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
50 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
55 * @param packed whether to use the packed or unpacked reader
57 AliHLTTPCClusterFinderComponent(bool packed);
59 virtual ~AliHLTTPCClusterFinderComponent();
61 // Public functions to implement AliHLTComponent's interface.
62 // These functions are required for the registration process
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 */
71 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
72 /** interface function, see @ref AliHLTComponent for description */
73 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
74 /** interface function, see @ref AliHLTComponent for description */
75 AliHLTComponent* Spawn();
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 int DoInit( int argc, const char** argv );
85 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
86 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
87 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
89 using AliHLTProcessor::DoEvent;
92 /** copy constructor prohibited */
93 AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
94 /** assignment operator prohibited */
95 AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
96 /** the cluster finder object */
97 AliHLTTPCClusterFinder* fClusterFinder; //!transient
98 /** the reader object for data decoding */
99 AliHLTTPCDigitReader* fReader; //!transient
101 bool fClusterDeconv; //!transient
102 float fXYClusterError; //!transient
103 float fZClusterError; //!transient
105 * switch to indicated the reader
106 * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
107 * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
109 Int_t fPackedSwitch; // see above
112 * Reads the data the new unsorted way if true
115 Int_t fUnsorted; //!transient
118 * Patch number to be read, currently given as component argument,
119 * will be changed later.
121 Int_t fPatch; //!transient
124 * Switch to specify if one ship out a list of active pads.
125 * Used for the 2007 December run.
127 Int_t fGetActivePads; //!transient
130 * Pointer to a PadArray object containing a double array of all the pads in
133 AliHLTTPCPadArray * fPadArray; //!transient
135 ClassDef(AliHLTTPCClusterFinderComponent, 2)