Line data Source code
1 : //-*- Mode: C++ -*-
2 : // $Id$
3 : //* This file is property of and copyright by the ALICE HLT Project *
4 : //* ALICE Experiment at CERN, All rights reserved. *
5 : //* See cxx source for full Copyright notice *
6 :
7 : #ifndef ALIHLTTPCHWCFDIVISIONUNIT_H
8 : #define ALIHLTTPCHWCFDIVISIONUNIT_H
9 :
10 : #include "AliHLTTPCHWCFDataTypes.h"
11 : #include "AliHLTLogging.h"
12 : class TNtuple;
13 : class TFile;
14 :
15 : // @class AliHLTTPCHWCFDivisionUnit
16 : // @author Sergey Gorbunov <sergey.gorbunov@fias.uni-frankfurt.de>
17 : // @author Torsten Alt <talt@cern.ch>
18 : // @brief Division unit of FPGA ClusterFinder Emulator for TPC
19 : // @brief ( see AliHLTTPCHWCFEmulator class )
20 : // @note
21 : //
22 : class AliHLTTPCHWCFDivisionUnit :public AliHLTLogging
23 : {
24 : public:
25 :
26 : static bool CompareMCWeights(const AliHLTTPCClusterMCWeight &a, const AliHLTTPCClusterMCWeight &b){
27 0 : return a.fWeight > b.fWeight;
28 : }
29 : static bool CompareMCLabels(const AliHLTTPCClusterMCWeight &a, const AliHLTTPCClusterMCWeight &b){
30 0 : return a.fMCID < b.fMCID;
31 : }
32 :
33 : /** standard constructor */
34 : AliHLTTPCHWCFDivisionUnit();
35 :
36 : /** destructor */
37 : ~AliHLTTPCHWCFDivisionUnit();
38 :
39 : /** set debug level */
40 0 : void SetDebugLevel( int val ){ fDebug = val; }
41 :
42 : /** Suppress clusters wich were not mmerged (except of clusters at branch borders)
43 : */
44 0 : void SetSinglePadSuppression( bool val ){ fSinglePadSuppression=val; }
45 :
46 : /** Lower charge limit for clusters
47 : */
48 : void SetClusterLowerLimit( AliHLTUInt32_t val ){
49 0 : fClusterLowerLimit = val << AliHLTTPCHWCFDefinitions::kFixedPoint;
50 0 : }
51 :
52 : /** set tagging of deconvoluted clusters
53 : **/
54 0 : void SetTagDeconvolutedClusters( AliHLTUInt32_t b ){ fTagDeconvolutedClusters = b; }
55 :
56 : /** initialise */
57 : int Init();
58 :
59 : /** input stream of data */
60 : int InputStream( const AliHLTTPCHWCFClusterFragment *fragment );
61 :
62 : /** output stream of data */
63 : const AliHLTTPCHWCFCluster *OutputStream();
64 :
65 : private:
66 :
67 : /** copy constructor prohibited */
68 : AliHLTTPCHWCFDivisionUnit(const AliHLTTPCHWCFDivisionUnit&);
69 : /** assignment operator prohibited */
70 : AliHLTTPCHWCFDivisionUnit& operator=(const AliHLTTPCHWCFDivisionUnit&);
71 :
72 : bool fSinglePadSuppression; // suppress not merged clusters
73 : AliHLTUInt64_t fClusterLowerLimit; // lower charge limit for clusters
74 : AliHLTUInt32_t fTagDeconvolutedClusters; // way to tag deconvoluted clusters
75 : // 0: no tagging
76 : // 1: tag pad, tag time if one of the time sequences is deconvoluted
77 : // 2: tag pad, tag time if 2 consecutive time sequences are deconvoluted
78 : const AliHLTTPCHWCFClusterFragment *fkInput; // current input
79 : AliHLTTPCHWCFCluster fOutput; // current output
80 : int fDebug; // debug level
81 : TNtuple *fDebugNtuple; // ntuple with some cluster parameters for debugging
82 : TFile * fDebugFile; // file with debug ntuple
83 : };
84 :
85 : #endif
|