HWCF emulator update according to the new hardware clusterfinder
[u/mrichter/AliRoot.git] / HLT / TPCLib / HWCFemulator / AliHLTTPCHWCFProcessorUnit.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTPCHWCFPROCESSORUNIT_H
4 #define ALIHLTTPCHWCFPROCESSORUNIT_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
11 #include "AliHLTDataTypes.h"
12 #include "AliHLTTPCHWCFDataTypes.h"
13
14
15 //  @class AliHLTTPCHWCFProcessorUnit
16 //  @author Sergey Gorbunov <sergey.gorbunov@fias.uni-frankfurt.de>
17 //  @author Torsten Alt <talt@cern.ch> 
18 //  @brief  Channel Processor unit of FPGA ClusterFinder Emulator for TPC
19 //  @brief  ( see AliHLTTPCHWCFEmulator class )
20 //  @note
21 //
22 class AliHLTTPCHWCFProcessorUnit
23 {
24  public:
25
26   /** standard constructor */
27   AliHLTTPCHWCFProcessorUnit();
28   
29   /** destructor */
30   ~AliHLTTPCHWCFProcessorUnit();
31
32   /** set debug level */
33   void SetDebugLevel( int val ){ fDebug = val; }
34
35   /** do cluster deconvolution in time direction */
36   void SetDeconvolutionTime( bool val ){ fDeconvolute = val; }
37
38   /** lower charge limit for isolated signals
39    */
40   void SetSingleSeqLimit( AliHLTUInt32_t val ){ 
41     fSingleSeqLimit = val << AliHLTTPCHWCFDefinitions::kFixedPoint; 
42   }
43
44   /** limit size of the cluster in time bins to 5
45    */
46   void SetUseTimeBinWindow( bool val ){ 
47     fUseTimeBinWindow = val;
48   }
49
50   /** initialise */
51   int Init();
52   
53   /** input stream of data */
54   int InputStream( const AliHLTTPCHWCFBunch *bunch );
55
56   /** output stream of data */
57   const AliHLTTPCHWCFClusterFragment *OutputStream();
58   
59  private: 
60
61   /** copy constructor prohibited */
62   AliHLTTPCHWCFProcessorUnit(const AliHLTTPCHWCFProcessorUnit&);
63   /** assignment operator prohibited */
64   AliHLTTPCHWCFProcessorUnit& operator=(const AliHLTTPCHWCFProcessorUnit&);  
65   
66
67   AliHLTTPCHWCFClusterFragment fOutput; // current output
68   const AliHLTTPCHWCFBunch *fkBunch; // current input
69   AliHLTUInt32_t fBunchIndex; // index in bunch
70   bool fDeconvolute;    // do deconvolution in time direction
71   AliHLTUInt64_t fSingleSeqLimit; // lower charge limit for isolated signals
72   bool fUseTimeBinWindow; // set max. size of the cluster to 5 time bins 
73   int fDebug; // debug level
74 };
75
76 #endif