3 #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
4 #define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7 * See cxx source for full Copyright notice */
9 /** @file AliHLTTPCClusterFinderComponent.h
10 @author Timm Steinbeck, Matthias Richter, Jochen Thaeder
12 @brief The TPC cluster finder component.
15 #include "AliHLTProcessor.h"
16 #include "AliHLTTPCDefinitions.h"
17 #include "AliHLTTPCDigitReaderPacked.h"
18 #include "AliHLTTPCDigitReaderUnpacked.h"
19 #include "AliHLTTPCDigitReaderRaw.h"
21 class AliHLTTPCClusterFinder;
24 * @class AliHLTTPCClusterFinderComponent
25 * Implementation of the cluster finder component.
26 * The component implements the interface methods of the @ref AliHLTProcessor.
27 * The actual cluster finding algorithm is implemented in @ref AliHLTTPCClusterFinder.
28 * The component can handle unpacked and packed data of different formats via the
29 * AliHLTTPCDigitReader implementations. Two components are registered, the
30 * TPCClusterFinderUnpacked and the TPCClusterFinderPacked. The latter one can
31 * instantiate different digit readers depending on the arguments.
33 * The component has the following component arguments:
34 * - rawreadermode the mode for the @ref AliHLTTPCDigitReaderRaw
35 * - adc-threshold ADC count threshold for zero suppression, if <0 the base line
36 * calculation and subtraction is switched off
37 * - pp-run set parameters specific to a pp run; currently this switches
38 * cluster deconvolution off for pp runs
42 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
47 * @param packed whether to use the packed or unpacked reader
49 AliHLTTPCClusterFinderComponent(bool packed);
50 /** not a valid copy constructor, defined according to effective C++ style */
51 AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
52 /** not a valid assignment op, but defined according to effective C++ style */
53 AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
55 virtual ~AliHLTTPCClusterFinderComponent();
57 // Public functions to implement AliHLTComponent's interface.
58 // These functions are required for the registration process
60 const char* GetComponentID();
61 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
62 AliHLTComponentDataType GetOutputDataType();
63 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
64 AliHLTComponent* Spawn();
68 // Protected functions to implement AliHLTComponent's interface.
69 // These functions provide initialization as well as the actual processing
70 // capabilities of the component.
72 int DoInit( int argc, const char** argv );
74 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
75 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
76 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
79 /** the cluster finder object */
80 AliHLTTPCClusterFinder* fClusterFinder; //!transient
81 /** the reader object for data decoding */
82 AliHLTTPCDigitReader* fReader; //!transient
85 float fXYClusterError;
88 * switch to indicated the reader
89 * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
90 * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
92 Int_t fPackedSwitch; // see above
94 ClassDef(AliHLTTPCClusterFinderComponent, 0)