60f4711a6518928c92ba340d7d362e38fb613978
[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 SetDeconvolution( 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   /** max. size of the cluster in time bins
45    */
46   void SetTimeBinWindow( AliHLTUInt32_t val ){ 
47     fHalfTimeBinWindow = val/2;
48   }
49
50   /** set allowed charge fluctuation for peak finding
51    */
52   void SetChargeFluctuation( AliHLTUInt32_t val ){ 
53     fChargeFluctuation = val;
54   }
55
56
57   /** initialise */
58   int Init();
59   
60   /** input stream of data */
61   int InputStream( const AliHLTTPCHWCFBunch *bunch );
62
63   /** output stream of data */
64   const AliHLTTPCHWCFClusterFragment *OutputStream();
65   
66  private: 
67
68   /** copy constructor prohibited */
69   AliHLTTPCHWCFProcessorUnit(const AliHLTTPCHWCFProcessorUnit&);
70   /** assignment operator prohibited */
71   AliHLTTPCHWCFProcessorUnit& operator=(const AliHLTTPCHWCFProcessorUnit&);  
72   
73
74   AliHLTTPCHWCFClusterFragment fOutput; // current output
75   const AliHLTTPCHWCFBunch *fkBunch; // current input
76   AliHLTUInt32_t fBunchIndex; // index in bunch
77   bool fDeconvolute;    // do deconvolution in time direction
78   AliHLTUInt64_t fSingleSeqLimit; // lower charge limit for isolated signals
79   AliHLTInt32_t fHalfTimeBinWindow; // 1/2 of max. size of the cluster in time bins 
80   AliHLTInt32_t fChargeFluctuation; // allowed charge fluctuation for peak finding 
81   int fDebug; // debug level
82 };
83
84 #endif