]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
additional boundary checks (Kenneth)
[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 /** destructor */
71d7c760 59 virtual ~AliHLTTPCClusterFinderComponent();
60
61 // Public functions to implement AliHLTComponent's interface.
62 // These functions are required for the registration process
63
5df0cbb9 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();
a655eae3 74
71d7c760 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();
8ede8717 83 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
84 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
85 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
71d7c760 86
5d2abf3b 87 using AliHLTProcessor::DoEvent;
88
71d7c760 89 private:
a1dbf058 90 /** copy constructor prohibited */
91 AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
92 /** assignment operator prohibited */
93 AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
db16520a 94 /** the cluster finder object */
2a083ac4 95 AliHLTTPCClusterFinder* fClusterFinder; //!transient
db16520a 96 /** the reader object for data decoding */
2a083ac4 97 AliHLTTPCDigitReader* fReader; //!transient
71d7c760 98
e67b0680 99 bool fClusterDeconv; //!transient
100 float fXYClusterError; //!transient
101 float fZClusterError; //!transient
2a083ac4 102 /**
103 * switch to indicated the reader
104 * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
105 * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
106 */
107 Int_t fPackedSwitch; // see above
a38a7850 108
01f43166 109 /*
110 * Reads the data the new unsorted way if true
111 *
112 */
113 Int_t fUnsorted; //!transient
114
115 /*
116 * Patch number to be read, currently given as component argument,
117 * will be changed later.
118 */
119 Int_t fPatch; //!transient
120
121 /*
122 * Pointer to a PadArray object containing a double array of all the pads in
123 * the current patch.
124 */
125 AliHLTTPCPadArray * fPadArray; //!transient
126
127 ClassDef(AliHLTTPCClusterFinderComponent, 1)
71d7c760 128
129 };
130#endif