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 ///////////////////////////////////////////////////////////////////////////////
31 class AliTPCAltroEmulator : public TNamed {
34 AliTPCAltroEmulator(int timebins, short* Channel);
35 AliTPCAltroEmulator(const AliTPCAltroEmulator &sig);
36 ~AliTPCAltroEmulator();
37 AliTPCAltroEmulator& operator = (const AliTPCAltroEmulator &source);
39 void ConfigAltro(int ONBaselineCorrection1, int ONTailcancellation, int ONBaselineCorrection2, int ONClipping, int ONZerosuppression, int ONDataFormatting);
40 void ConfigBaselineCorrection1(int mode, int ValuePeDestal, int *PedestalMem, int polarity);
41 void ConfigTailCancellationFilter(int K1, int K2, int K3, int L1, int L2, int L3);
42 void ConfigBaselineCorrection2(int HighThreshold, int LowThreshold, int Offset, int Presamples, int Postsamples);
43 void ConfigZerosuppression(int Threshold, int MinSamplesaboveThreshold, int Presamples, int Postsamples);
44 void PrintParameters();
46 float CalculateCompression();
49 /**din - fpd*/ kDINxFPD,
50 /**din - f(t)*/ kDINxFT,
51 /**din - f(din)*/ kDINxFDIN,
52 /**din - f(din-vpd)*/ kDINxFDINxVPD,
53 /**din - vpd - fpd*/ kDINxVPDxFPD,
54 /**din - vpd - f(t)*/ kDINxVPDxFT,
55 /**din - vpd - f(din)*/ kDINxVPDxFDIN,
56 /**din - vpd - f(din - vpd)*/ kDINxVPDxFDINxVPD,
57 /**f(din) - fpd*/ kFDINxFPD,
58 /**f(din - vpd) - fpd*/ kFDINxVPDxFPD,
59 /**f(t) - fpd*/ kFTxFPD,
60 /**f(t) - f(t)*/ kFTxFT,
61 /**f(din) - f(din)*/ kFDINxFDIN,
62 /**f(din - vpd) - f(din - vpd)*/ kFDINxVPDxFDINxVPD,
63 /**din - fpd*/ kDINxFPD1,
64 /**din - fpd*/ kDINxFPD2
68 int ftimebins; // timebins
70 // short *fChannelIn; // ChannelIn
71 short *fChannelShort; // incoming signal in short format
72 short *fADCkeep; // ADCkeep
74 int fOnBSL1; // Baseline correction and substraction 1 on
75 int fOnTCF; // Tail Cancelation Filter on
76 int fOnBSL2; // Baseline correction and substraction 2 (MAF) on
77 int fOnClip; // Clipping on (to reverse the signal for ZSU if BSL2 is on)
78 int fOnZSU; // Zero Suppression on
80 int fConfiguredAltro; // ConfiguredAltro
81 int fConfiguredBSL1; // ConfiguredBSL1
82 int fConfiguredTCF; // ConfiguredTCF
83 int fConfiguredBSL2; // ConfiguredBSL2
84 int fConfiguredZSU; // ConfiguredZSU
86 int fBSL1mode; // BSL1mode
87 int fBSL1ValuePeDestal; // BSL1ValuePeDestal
88 int* fBSL1PedestalMem; // BSL1PedestalMem
89 int fBSL1polarity; // BSL1polarity
98 int fTCFK1Int; // K1Int
99 int fTCFK2Int; // K2Int
100 int fTCFK3Int; // K3Int
101 int fTCFL1Int; // L1Int
102 int fTCFL2Int; // L2Int
103 int fTCFL3Int; // L3Int
105 int fBSL2HighThreshold; // BSL2HighThreshold
106 int fBSL2LowThreshold; // BSL2LowThreshold
107 int fBSL2Offset; // BSL2Offset
108 int fBSL2Presamples; // BSL2Presamples;
109 int fBSL2Postsamples; // BSL2Postsamples
111 int fZSUThreshold; // ZSUThreshold
112 int fZSUMinSamplesaboveThreshold; // ZSUMinSamplesaboveThreshold
113 int fZSUPresamples; // ZSUPresamples
114 int fZSUPostsamples; // ZSUPostsamples
116 void BaselineCorrection1(int mode, int FixedPeDestal, int *PedestalMem, int polarity);
117 void TailCancellationFilterFixedPoint(int K1, int K2, int K3, int L1, int L2, int L3);
118 void BaselineCorrection2RTL(int HighThreshold, int LowThreshold, int Offset, int Presamples, int Postsamples);
120 void Zerosuppression(int Threshold, int MinSamplesaboveThreshold, int Presamples, int Postsamples);
123 short GetElement(short* Array,int index);
124 void SetElement(short* Array,int index,short value);
126 int InBand(int ADC,int bsl, int LowThreshold, int HighThreshold);
127 int InRange(int parameter,int Low,int High,const char *Module,const char *ParameterName);
128 short GetShortChannel(int i);
129 short GetKeepChannel(int i);
130 int Multiply36(int P, int N);
131 long long Mask(long long in, int left, int right);
132 long long Maskandshift(long long in, int left, int right);
133 ClassDef(AliTPCAltroEmulator,0)