1 #ifndef ALI_TPC_ALTRO_EMULATOR_H
2 #define ALI_TPC_ALTRO_EMULATOR_H
5 /** @file AliTPCAltroEmulator.h
6 * @brief This the header File for the Altro class
9 * @version $LastChangedRevision: 688 $
10 * @date $LastChangedDate: 2005-12-16 14:07:11 +0100 (Fri, 16 Dec 2005) $
12 * \verbinclude Altro/Altro.h.log
16 ///////////////////////////////////////////////////////////////////////////////
17 // Class AliTPCAltroEmulator //
18 // Class for emulation of the ALTRO chip (Altro digital Chain) in C++ //
19 ///////////////////////////////////////////////////////////////////////////////
28 class AliTPCAltroEmulator{
30 AliTPCAltroEmulator(int timebins, short* Channel);
31 AliTPCAltroEmulator(const AliTPCAltroEmulator &sig);
32 ~AliTPCAltroEmulator();
33 AliTPCAltroEmulator& operator = (const AliTPCAltroEmulator &source);
35 void ConfigAltro(int ONBaselineCorrection1, int ONTailcancellation, int ONBaselineCorrection2, int ONClipping, int ONZerosuppression, int ONDataFormatting);
36 void ConfigBaselineCorrection1(int mode, int ValuePeDestal, int *PedestalMem, int polarity);
37 void ConfigTailCancellationFilter(int K1, int K2, int K3, int L1, int L2, int L3);
38 void ConfigBaselineCorrection2(int HighThreshold, int LowThreshold, int Offset, int Presamples, int Postsamples);
39 void ConfigZerosuppression(int Threshold, int MinSamplesaboveThreshold, int Presamples, int Postsamples);
40 void PrintParameters();
42 float CalculateCompression();
45 /**din - fpd*/ kDINxFPD,
46 /**din - f(t)*/ kDINxFT,
47 /**din - f(din)*/ kDINxFDIN,
48 /**din - f(din-vpd)*/ kDINxFDINxVPD,
49 /**din - vpd - fpd*/ kDINxVPDxFPD,
50 /**din - vpd - f(t)*/ kDINxVPDxFT,
51 /**din - vpd - f(din)*/ kDINxVPDxFDIN,
52 /**din - vpd - f(din - vpd)*/ kDINxVPDxFDINxVPD,
53 /**f(din) - fpd*/ kFDINxFPD,
54 /**f(din - vpd) - fpd*/ kFDINxVPDxFPD,
55 /**f(t) - fpd*/ kFTxFPD,
56 /**f(t) - f(t)*/ kFTxFT,
57 /**f(din) - f(din)*/ kFDINxFDIN,
58 /**f(din - vpd) - f(din - vpd)*/ kFDINxVPDxFDINxVPD,
59 /**din - fpd*/ kDINxFPD1,
60 /**din - fpd*/ kDINxFPD2
64 int ftimebins; // timebins
66 short *fChannelIn; // ChannelIn
67 short *fChannelShort; // incoming signal in short format
68 short *fADCkeep; // ADCkeep
70 int fOnBSL1; // Baseline correction and substraction 1 on
71 int fOnTCF; // Tail Cancelation Filter on
72 int fOnBSL2; // Baseline correction and substraction 2 (MAF) on
73 int fOnClip; // Clipping on (to reverse the signal for ZSU if BSL2 is on)
74 int fOnZSU; // Zero Suppression on
76 int fConfiguredAltro; // ConfiguredAltro
77 int fConfiguredBSL1; // ConfiguredBSL1
78 int fConfiguredTCF; // ConfiguredTCF
79 int fConfiguredBSL2; // ConfiguredBSL2
80 int fConfiguredZSU; // ConfiguredZSU
82 int fBSL1mode; // BSL1mode
83 int fBSL1ValuePeDestal; // BSL1ValuePeDestal
84 int* fBSL1PedestalMem; // BSL1PedestalMem
85 int fBSL1polarity; // BSL1polarity
94 int fTCFK1Int; // K1Int
95 int fTCFK2Int; // K2Int
96 int fTCFK3Int; // K3Int
97 int fTCFL1Int; // L1Int
98 int fTCFL2Int; // L2Int
99 int fTCFL3Int; // L3Int
101 int fBSL2HighThreshold; // BSL2HighThreshold
102 int fBSL2LowThreshold; // BSL2LowThreshold
103 int fBSL2Offset; // BSL2Offset
104 int fBSL2Presamples; // BSL2Presamples;
105 int fBSL2Postsamples; // BSL2Postsamples
107 int fZSUThreshold; // ZSUThreshold
108 int fZSUMinSamplesaboveThreshold; // ZSUMinSamplesaboveThreshold
109 int fZSUPresamples; // ZSUPresamples
110 int fZSUPostsamples; // ZSUPostsamples
112 void BaselineCorrection1(int mode, int FixedPeDestal, int *PedestalMem, int polarity);
113 void TailCancellationFilterFixedPoint(int K1, int K2, int K3, int L1, int L2, int L3);
114 void BaselineCorrection2RTL(int HighThreshold, int LowThreshold, int Offset, int Presamples, int Postsamples);
116 void Zerosuppression(int Threshold, int MinSamplesaboveThreshold, int Presamples, int Postsamples);
119 short GetElement(short* Array,int index);
120 void SetElement(short* Array,int index,short value);
122 int InBand(int ADC,int bsl, int LowThreshold, int HighThreshold);
123 int InRange(int parameter,int Low,int High,char *Module,char *ParameterName);
124 short GetShortChannel(int i);
125 short GetKeepChannel(int i);
126 int Multiply36(int P, int N);
127 long long Mask(long long in, int left, int right);
128 long long Maskandshift(long long in, int left, int right);