]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
documentation, formatting, coding conventions
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinderComponent.h
CommitLineData
71d7c760 1// @(#) $Id$
2
3#ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
4#define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
a38a7850 5
01f43166 6/* This file is property of and copyright by the ALICE HLT Project *
7 * ALICE Experiment at CERN, All rights reserved. *
71d7c760 8 * See cxx source for full Copyright notice */
9
de554e07 10/** @file AliHLTTPCClusterFinderComponent.h
11 @author Timm Steinbeck, Matthias Richter, Jochen Thaeder
12 @date
13 @brief The TPC cluster finder component.
14*/
71d7c760 15
e67b0680 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
71d7c760 22#include "AliHLTProcessor.h"
71d7c760 23
a38a7850 24class AliHLTTPCClusterFinder;
01f43166 25class AliHLTTPCPadArray;
e67b0680 26class AliHLTTPCDigitReader;
71d7c760 27
84645eb0 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.
de554e07 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.
84645eb0 37 *
38 * The component has the following component arguments:
01f43166 39 * - rawreadermode the mode for the @ref AliHLTTPCDigitReaderRaw, use -2 if using unsorted
84645eb0 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
01f43166 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
84645eb0 47 *
48 * @ingroup alihlt_tpc
49 */
71d7c760 50class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
51 {
52 public:
74c73e5a 53 /**
54 * constructor
55 * @param packed whether to use the packed or unpacked reader
56 */
a38a7850 57 AliHLTTPCClusterFinderComponent(bool packed);
74c73e5a 58 /** not a valid copy constructor, defined according to effective C++ style */
59 AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
60 /** not a valid assignment op, but defined according to effective C++ style */
61 AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
62 /** destructor */
71d7c760 63 virtual ~AliHLTTPCClusterFinderComponent();
64
65 // Public functions to implement AliHLTComponent's interface.
66 // These functions are required for the registration process
67
5df0cbb9 68 /** interface function, see @ref AliHLTComponent for description */
69 const char* GetComponentID();
70 /** interface function, see @ref AliHLTComponent for description */
71 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
72 /** interface function, see @ref AliHLTComponent for description */
73 AliHLTComponentDataType GetOutputDataType();
74 /** interface function, see @ref AliHLTComponent for description */
75 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
76 /** interface function, see @ref AliHLTComponent for description */
77 AliHLTComponent* Spawn();
a655eae3 78
71d7c760 79 protected:
80
81 // Protected functions to implement AliHLTComponent's interface.
82 // These functions provide initialization as well as the actual processing
83 // capabilities of the component.
84
85 int DoInit( int argc, const char** argv );
86 int DoDeinit();
8ede8717 87 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
88 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
89 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
71d7c760 90
91 private:
db16520a 92 /** the cluster finder object */
2a083ac4 93 AliHLTTPCClusterFinder* fClusterFinder; //!transient
db16520a 94 /** the reader object for data decoding */
2a083ac4 95 AliHLTTPCDigitReader* fReader; //!transient
71d7c760 96
e67b0680 97 bool fClusterDeconv; //!transient
98 float fXYClusterError; //!transient
99 float fZClusterError; //!transient
2a083ac4 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
a38a7850 106
01f43166 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)
71d7c760 126
127 };
128#endif