dummy reconfiguration handler added
[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   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();
76
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();
85         int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
86                      AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
87                      AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
88         int Reconfigure(const char* cdbEntry, const char* chainId);
89         
90         using AliHLTProcessor::DoEvent;
91
92     private:
93         /** copy constructor prohibited */
94         AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
95         /** assignment operator prohibited */
96         AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
97         /** the cluster finder object */
98         AliHLTTPCClusterFinder* fClusterFinder;                                      //!transient
99         /** the reader object for data decoding */
100         AliHLTTPCDigitReader* fReader;                                               //!transient
101
102         bool fClusterDeconv; //!transient
103       float fXYClusterError; //!transient
104       float fZClusterError; //!transient
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
111       
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
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
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
136       ClassDef(AliHLTTPCClusterFinderComponent, 2)
137
138     };
139 #endif