]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCHWCFDataReverterComponent.h
correcting bounds check for array
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCHWCFDataReverterComponent.h
CommitLineData
5c15b943 1// $Id$
a912b63b 2// XEmacs -*-C++-*-
3
4#ifndef ALIHLTTPCHWCFDATAREVERTERCOMPONENT_H
5#define ALIHLTTPCHWCFDATAREVERTERCOMPONENT_H
6
7//* This file is property of and copyright by the ALICE HLT Project *
8//* ALICE Experiment at CERN, All rights reserved. *
9//* See cxx source for full Copyright notice *
10
5c15b943 11/// @file AliHLTTPCHWCFDataReverterComponent.h
12/// @author Kenneth Aamodt
13/// @date
14/// @brief Component for reverting data for the HW clusterfinder
15///
a912b63b 16
17#include "AliHLTProcessor.h"
18#include "AliHLTTPCPad.h"
19#include "AliHLTDataTypes.h"
20
21class AliHLTTPCDigitReader;
22class AliHLTTPCMapping;
23
24/**
25 * @class AliHLTTPCHWCFDataReverterComponent
26 * Implementation of the zero suppression component.
27 * The component implements the interface methods of the @ref AliHLTProcessor.
28 *
29 * The component orders the data in the format the Hardware ClusterFinder
30 * expects, and revert the 40 bit altro words.
31 *
32 * The component has the following component arguments:
33 *
34 * @ingroup alihlt_tpc_components
35 */
36class AliHLTTPCHWCFDataReverterComponent : public AliHLTProcessor
37 {
38 public:
39 /** constructor */
40 AliHLTTPCHWCFDataReverterComponent();
41 /** destructor */
42 virtual ~AliHLTTPCHWCFDataReverterComponent();
43
44 // Public functions to implement AliHLTComponent's interface.
45 // These functions are required for the registration process
46
47 /** interface function, see AliHLTComponent for description */
48 const char* GetComponentID();
49 /** interface function, see AliHLTComponent for description */
50 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
51 /** interface function, see AliHLTComponent for description */
52 AliHLTComponentDataType GetOutputDataType();
53 /** interface function, see AliHLTComponent for description */
54 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
55 /** interface function, see AliHLTComponent for description */
56 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
57 /** interface function, see AliHLTComponent for description */
58 AliHLTComponent* Spawn();
59
60 Int_t DeInitializePadArray();
61 void InitializePadArray();
62
63 protected:
64
65 // Protected functions to implement AliHLTComponent's interface.
66 // These functions provide initialization as well as the actual processing
67 // capabilities of the component.
68
69 int DoInit( int argc, const char** argv );
70 int DoDeinit();
71 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
72 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
73 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
74 using AliHLTProcessor::DoEvent;
75
76 private:
77
78 /** copy constructor prohibited */
79 AliHLTTPCHWCFDataReverterComponent(const AliHLTTPCHWCFDataReverterComponent&);
80
81 /** assignment operator prohibited */
82 AliHLTTPCHWCFDataReverterComponent& operator=(const AliHLTTPCHWCFDataReverterComponent&);
83
84 /** the reader object for data decoding */
85 AliHLTTPCDigitReader* fDigitReader; //!transient
86
87 /** Vector of pointers to pad objects */
88 typedef vector<AliHLTTPCPad*> AliHLTTPCPadVector;
89
90 /** 2D vector of pointers to pad objects (vector of vectors)*/
91 vector<AliHLTTPCPadVector> fRowPadVector; //! transient
92
93 /** Array containing number of pads in the different rows */
94 Int_t* fNumberOfPadsInRow; //! transient
95
96 /** Array containing the index f forst pad on row with hwaddress > 2048 */
97 Int_t* fFirstPadHigh; //! transient
98
99 /** Number of rows the patch has */
100 Int_t fNumberOfRows; //! transient
101
102 /** Current patch number */
103 UInt_t fCurrentPatch; //! transient
104
105 /** First row in patch */
106 UInt_t fFirstRow; //! transient
107
108 /** Last row in patch */
109 UInt_t fLastRow; //! transient
110
111 /** Number of timebins */
112 Int_t fNTimeBins; //! transient
113
114 /** Flag to check if the 2d vector is initialized */
115 Bool_t fVectorInitialized; //! transient
116
117 /** pointer to mapping object */
118 AliHLTTPCMapping *fMapping;
119
8e69f9ad 120 /** Flag to check if one should interleave the data */
121 Bool_t fInterleave;
122
22240104 123 ClassDef(AliHLTTPCHWCFDataReverterComponent, 0)
8e69f9ad 124};
a912b63b 125#endif