coding conventions and compilation warnings
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinderComponent.h
1 // @(#) $Id$
2
3 #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
4 #define ALIHLTTPCCLUSTERFINDERCOMPONENT_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   AliHLTTPCClusterFinderComponent.h
11     @author Timm Steinbeck, Matthias Richter, Jochen Thaeder
12     @date   
13     @brief  The TPC cluster finder component.
14 */
15
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
22 #include "AliHLTProcessor.h"
23
24 class AliHLTTPCClusterFinder;
25 class AliHLTTPCPadArray;
26 class AliHLTTPCDigitReader;
27
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.
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.
37  * 
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
47  *
48  * @ingroup alihlt_tpc
49  */
50 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
51     {
52     public:
53         /**
54          * constructor 
55          * @param packed    whether to use the packed or unpacked reader 
56          */
57         AliHLTTPCClusterFinderComponent(bool packed);
58         /** destructor */
59         virtual ~AliHLTTPCClusterFinderComponent();
60
61         // Public functions to implement AliHLTComponent's interface.
62         // These functions are required for the registration process
63
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   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
72   /** interface function, see @ref AliHLTComponent for description */
73   AliHLTComponent* Spawn();
74
75     protected:
76         
77         // Protected functions to implement AliHLTComponent's interface.
78         // These functions provide initialization as well as the actual processing
79         // capabilities of the component. 
80
81         int DoInit( int argc, const char** argv );
82         int DoDeinit();
83         int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
84                      AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
85                      AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
86         
87     private:
88         /** copy constructor prohibited */
89         AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
90         /** assignment operator prohibited */
91         AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
92         /** the cluster finder object */
93         AliHLTTPCClusterFinder* fClusterFinder;                                      //!transient
94         /** the reader object for data decoding */
95         AliHLTTPCDigitReader* fReader;                                               //!transient
96
97         bool fClusterDeconv; //!transient
98       float fXYClusterError; //!transient
99       float fZClusterError; //!transient
100       /**
101        * switch to indicated the reader
102        * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
103        * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
104        */
105       Int_t fPackedSwitch;                                                           // see above
106       
107       /*
108        * Reads the data the new unsorted way if true
109        *
110        */
111       Int_t fUnsorted;                                                               //!transient
112
113       /*
114        * Patch number to be read, currently given as component argument,
115        * will be changed later.
116        */
117       Int_t fPatch;                                                                  //!transient
118
119       /*
120        * Pointer to a PadArray object containing a double array of all the pads in
121        * the current patch.
122        */
123       AliHLTTPCPadArray * fPadArray;                                                 //!transient
124
125       ClassDef(AliHLTTPCClusterFinderComponent, 1)
126
127     };
128 #endif