2 #ifndef ALIHLTTPCHWCFDATATYPES_H
3 #define ALIHLTTPCHWCFDATATYPES_H
4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
6 //* See cxx source for full Copyright notice *
8 // @file AliHLTTPCHWCFDataTypes.h
9 // @author Sergey Gorbunov <sergey.gorbunov@fias.uni-frankfurt.de>
10 // @author Torsten Alt <talt@cern.ch>
11 // @brief Data types for FPGA ClusterFinder Emulator for TPC
12 // @brief ( see AliHLTTPCHWCFEmulator class )
15 #include "AliHLTDataTypes.h"
16 #include "AliHLTTPCClusterMCData.h"
20 struct AliHLTTPCHWCFDefinitions
22 static const unsigned int kMaxNTimeBins = 1024+10; // max N time bins
23 static const int kFixedPoint = 12; // N bits after fixed point
24 // for fixed point operations
27 typedef struct AliHLTTPCHWCFDefinitions AliHLTTPCHWCFDefinitions;
29 struct AliHLTTPCHWCFDigit
32 AliHLTTPCHWCFDigit(): fQ(0), fTime(0), fPeak(0), fMC()
35 AliHLTUInt32_t fQ; // charge
36 AliHLTUInt32_t fTime; // timebin
37 AliHLTUInt32_t fPeak; // peak flag: 0:flat, 1:peak, 2: local minimum
38 AliHLTTPCClusterMCLabel fMC; // mc label
40 typedef struct AliHLTTPCHWCFDigit AliHLTTPCHWCFDigit;
42 struct AliHLTTPCHWCFBunch
45 AliHLTTPCHWCFBunch(): fFlag(0), fRow(0), fPad(0), fBranch(0), fBorder(0),
49 AliHLTUInt32_t fFlag; // 0 - Off, 1 - data, 2 - RCU trailer, 3 - end of data
50 AliHLTUInt32_t fRow; // row number
51 AliHLTUInt32_t fPad; // pad number
52 bool fBranch; // 0 - pad belongs to branch A, 1 - pad belongs to branch B
53 bool fBorder; // is the pad at the border of its branch
54 AliHLTUInt64_t fGain; // gain correction factor
55 // (fixed point integer with kFixedPoint bits after the point)
56 std::vector<AliHLTTPCHWCFDigit> fData; // signals
58 typedef struct AliHLTTPCHWCFBunch AliHLTTPCHWCFBunch;
60 struct AliHLTTPCHWCFClusterFragment
63 AliHLTTPCHWCFClusterFragment(): fFlag(0), fRow(0), fPad(0), fBranch(0), fBorder(0),
64 fQmax(0), fQ(0), fT(0), fP(0), fT2(0), fP2(0), fTMean(0),fLastQ(0), fSlope(0), fMC()
67 AliHLTUInt32_t fFlag; // 0 - Off, 1 - data, 2 - RCU trailer, 3 - end of data
68 AliHLTUInt32_t fRow; // row number
69 AliHLTUInt32_t fPad; // pad number
70 bool fBranch; // 0 - pad belongs to branch A, 1 - pad belongs to branch B
71 bool fBorder; // is the pad at the border of its branch
72 AliHLTUInt64_t fQmax; // total charge, fixed point integer
73 AliHLTUInt64_t fQ; // total charge, fixed point integer
74 AliHLTUInt64_t fT; // sum of time*charge , fixed point integer
75 AliHLTUInt64_t fP; // sum of pad*charge , fixed point integer
76 AliHLTUInt64_t fT2; // sum of time^2*charge , fixed point integer
77 AliHLTUInt64_t fP2; // sum of pad^2*charge , fixed point integer
78 AliHLTUInt64_t fTMean;// mean time, used for merging neighbouring pads
79 AliHLTUInt64_t fLastQ; // for merged fragments, charge of the last (highest pad value)
80 // fragment bein merged, needed for deconvolution
81 bool fSlope; // for merged fragments, ==1 if fLastQ decreases
82 // ( needed for deconvolution )
83 std::vector<AliHLTTPCClusterMCLabel> fMC; // mc labels
85 typedef struct AliHLTTPCHWCFClusterFragment AliHLTTPCHWCFClusterFragment;
87 struct AliHLTTPCHWCFCluster
90 AliHLTTPCHWCFCluster(): fFlag(0), fRowQ(0), fQ(0), fT(0), fP(0), fT2(0), fP2(0), fMC()
93 AliHLTUInt32_t fFlag; // 0 - Off, 1 - data, 2 - RCU trailer, 3 - end of data
94 AliHLTUInt32_t fRowQ; // bits 30-31 = 0x3
95 // bits 24-29 = row number
96 // bits 0 -23 = max adc value as fixed point integer,
97 // with 12 bits after the point
98 AliHLTUInt32_t fQ; // total charge as fixed point integer, 12 bits after the point
99 AliHLTUInt32_t fT; // mean time, 32-bit float stored as 32-bit integer
100 AliHLTUInt32_t fP; // mean pad, 32-bit float stored as 32-bit integer
101 AliHLTUInt32_t fT2; // mean time^2, 32-bit float stored as 32-bit integer
102 AliHLTUInt32_t fP2; // mean pad^2, 32-bit float stored as 32-bit integer
104 AliHLTTPCClusterMCLabel fMC; // mc label
106 typedef struct AliHLTTPCHWCFCluster AliHLTTPCHWCFCluster;