Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _OCS_ELEC_EQUALIZER_HH_
00013 #define _OCS_ELEC_EQUALIZER_HH_
00014
00015 #include "ocsPhotodetector.hh"
00016 #include "ocsElecSignalStat.hh"
00017
00018
00019 class ElecEqualizer
00020 {
00021 public:
00022 ElecEqualizer(string InFileName,
00023 ElecSignalStat *oElecSignalStat2 );
00024 ElecEqualizer(string InFileName,
00025 ElecSignalStat *oElecSignalStat2,
00026 ElecSignalStat *oElecSignalStatImag2);
00027 void InitElecEqualizer(string InFileName,
00028 ElecSignalStat *oElecSignalStat2);
00029 ~ElecEqualizer();
00030 void AllocateMemory(void);
00031 void ResetEqualizer(void);
00032 void EqualizeBitIntensityWiener(void);
00033 void EqualizeBitIntensityWienerReal(void);
00034 void EqualizeBitIntensityWienerCplx(void);
00035
00036 void EqualizeBitIntensityLMS( int StringLength
00037 ,double *DistortedBitIntensity
00038 ,double *EqualizedBitIntensity
00039 ,double *Back2BackBitIntensity
00040 ,double StepSize);
00041 void EqualizeBitIntensityWiener( int StringLength
00042 ,double *DistortedBitIntensity
00043 ,double *EqualizedBitIntensity);
00044 void EqualizeBitIntensityWiener( int StringLength
00045 ,double *DistortedBitIntensity
00046 ,double *EqualizedBitIntensity
00047 ,double *Back2BackBitIntensity);
00048 double GetEffectiveAmpMargin(ElecSignalStat *oElecSignalStat2);
00049 void WriteFileEyeDiagram(string outFile);
00050 double GetTapWeight(int IndexTap);
00051
00052 ElecSignalStat *oElecSignalStat;
00053 ElecSignalStat *oElecSignalStatIm;
00054 private:
00055 int qtInputTaps;
00056 int EqualizationTap;
00057 int FeedBackCorrectedBits;
00058 int UseFinalWeights;
00059 int NormalizeWeights;
00060 int SymmetricEqualization;
00061 int IsComplexEqualization;
00062 int UseExactDesired;
00063
00064 int StringLength;
00065 double MeanBitIntensity;
00066 double MeanBitIntensityIm;
00067 int *CorrelationVectorQtAverage;
00068
00069
00070 double *TapWeight;
00071 double **CorrelationMatrix;
00072 double *CorrelationVector;
00073 double *CrossCorrelationVector;
00074 double **TapWeightTmp;
00075
00076
00077 cplx *TapWeightCplx;
00078 cplx **CorrelationMatrixCplx;
00079 cplx *CorrelationVectorCplx;
00080 cplx *CrossCorrelationVectorCplx;
00081 cplx **TapWeightTmpCplx;
00082 };
00083 #endif