]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
- bugfix TPCClusterFinder: set correct row no in list of active pads
[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         
89         using AliHLTProcessor::DoEvent;
90
91     private:
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
100
101         bool fClusterDeconv; //!transient
102       float fXYClusterError; //!transient
103       float fZClusterError; //!transient
104       /**
105        * switch to indicated the reader
106        * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
107        * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
108        */
109       Int_t fPackedSwitch;                                                           // see above
110       
111       /*
112        * Reads the data the new unsorted way if true
113        *
114        */
115       Int_t fUnsorted;                                                               //!transient
116
117       /*
118        * Patch number to be read, currently given as component argument,
119        * will be changed later.
120        */
121       Int_t fPatch;                                                                  //!transient
122
123       /*
124        * Switch to specify if one ship out a list of active pads.
125        * Used for the 2007 December run. 
126        */
127       Int_t fGetActivePads;                                                          //!transient
128
129       /*
130        * Pointer to a PadArray object containing a double array of all the pads in
131        * the current patch.
132        */
133       AliHLTTPCPadArray * fPadArray;                                                 //!transient
134
135       ClassDef(AliHLTTPCClusterFinderComponent, 2)
136
137     };
138 #endif