]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
- parameter protection in the TPC raw reader class
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinderComponent.h
1 // @(#) $Id$
2
3 #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
4 #define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
5
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8
9 /* AliHLTTPCClusterFinderComponent
10  */
11
12 #include "AliHLTProcessor.h"
13 #include "AliHLTTPCDefinitions.h"
14 #include "AliHLTTPCDigitReaderPacked.h"
15 #include "AliHLTTPCDigitReaderUnpacked.h"
16 #include "AliHLTTPCDigitReaderRaw.h"
17
18 class AliHLTTPCClusterFinder;
19
20 /**
21  * @class AliHLTTPCClusterFinderComponent
22  * Implementation of the cluster finder component.
23  * The component implements the interface methods of the @ref AliHLTProcessor.
24  * The actual cluster finding algorithm is implemented in @ref AliHLTTPCClusterFinder.
25  * 
26  * The component has the following component arguments:
27  * - rawreadermode   the mode for the @ref AliHLTTPCDigitReaderRaw
28  * - adc-threshold   ADC count threshold for zero suppression, if <0 the base line
29  *                   calculation and subtraction is switched off
30  * - pp-run          set parameters specific to a pp run; currently this switches
31  *                   cluster deconvolution off for pp runs
32  *
33  * @ingroup alihlt_tpc
34  */
35 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
36     {
37     public:
38         /**
39          * constructor 
40          * @param packed    whether to use the packed or unpacked reader 
41          */
42         AliHLTTPCClusterFinderComponent(bool packed);
43         /** not a valid copy constructor, defined according to effective C++ style */
44         AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
45         /** not a valid assignment op, but defined according to effective C++ style */
46         AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
47         /** destructor */
48         virtual ~AliHLTTPCClusterFinderComponent();
49
50         // Public functions to implement AliHLTComponent's interface.
51         // These functions are required for the registration process
52
53         const char* GetComponentID();
54         void GetInputDataTypes( vector<AliHLTComponent_DataType>& list);
55         AliHLTComponent_DataType GetOutputDataType();
56         virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
57         AliHLTComponent* Spawn();
58         
59     protected:
60         
61         // Protected functions to implement AliHLTComponent's interface.
62         // These functions provide initialization as well as the actual processing
63         // capabilities of the component. 
64
65         int DoInit( int argc, const char** argv );
66         int DoDeinit();
67         int DoEvent( const AliHLTComponent_EventData& evtData, const AliHLTComponent_BlockData* blocks, 
68                      AliHLTComponent_TriggerData& trigData, AliHLTUInt8_t* outputPtr, 
69                      AliHLTUInt32_t& size, vector<AliHLTComponent_BlockData>& outputBlocks );
70         
71     private:
72         /** the cluster finder object */
73         AliHLTTPCClusterFinder* fClusterFinder;
74         /** the reader object for data decoding */
75         AliHLTTPCDigitReader* fReader;
76
77       bool fClusterDeconv;
78       float fXYClusterError;
79       float fZClusterError;
80       Int_t fPackedSwitch;
81       
82       ClassDef(AliHLTTPCClusterFinderComponent, 0)
83
84     };
85 #endif