#include <ocsElecSignalStat.hh>
Public Member Functions | |
ElecSignalStat (OptSignal *oOptSignal2, Photodetector *oPhotodetector2) | |
Constructor without input file. | |
ElecSignalStat (string InFileName, OptSignal *oOptSignal2, Photodetector *oPhotodetector2) | |
Constructor that reads parameters from an input file. | |
~ElecSignalStat (void) | |
void | SetUseAbsCurrentFlag (bool Value) |
string | WriteTypeClockRecovery (void) |
Returns the type of the clock recovery method. | |
void | ClearElecSignalStat (void) |
void | ClearGaussianPDFsMonteCarlo (void) |
void | ComputePerformanceStatistics (void) |
void | UpdatePerformanceStatistics (void) |
void | ComputeEqualizedPerformanceStatistics (void) |
void | UpdateEqualizedPerformanceStatistics (void) |
cplx * | GetSignalTimeDomain (void) |
int | GetBitFromString (int ii) |
double | GetMinAmplitudeMargin () |
void | WriteFileEyeDiagram (string outFile) |
void | WriteFileEyeDiagramFixedCLK (string outFile) |
double | GetClockRecoveryTime (void) |
double | GetClockRecoveryTimeBeforeTimeShift (void) |
See ElecSignalStat::ComputePerformanceStatistics(). | |
double | GetClockTimeForMonteCarloEye (void) |
double | GetClockCurrent (void) |
void | OutputGaussianStatisticsFromMonteCarlo (string FileID) |
void | SetTimeSlices (void) |
void | ComputeAndOutputMomentsFromMonteCarlo (string FileID) |
void | ComputeAveragePDFs (void) |
void | WriteFilePDFTimeSlicesAndAveragePDFs (string FileID) |
void | ComputeMinimumBERAndDecisionThreshold (string FileID) |
void | WriteFilePairVectors (double *x, double *y, int dim, string OutFileName) |
double | GetPowerMeanBit (int BitIndex) |
double | GetPowerStdDevBit (int BitIndex) |
double | GetQtBit0 (void) |
double | GetQtBit1 (void) |
double | GetBit0_PowerMax (void) |
double | GetBit1_PowerMin (void) |
double | GetBit0_PowerMean (void) |
double | GetBit1_PowerMean (void) |
double | GetBit0_PowerStdDev (void) |
double | GetBit1_PowerStdDev (void) |
double | GetElecTimeDomainSNR (void) |
double | GetQ_Factor (void) |
double | GetBitErrorRate (void) |
double | GetBitErrorRate (double Q_Factor) |
double | GetAmplitudeMargin (void) |
double | GetMeanPower (void) |
int | GetBitStringShift (void) |
double | GetQtIsolatedBit0 (void) |
Statistics obtained using isolated zeros and ones. | |
double | GetQtIsolatedBit1 (void) |
double | GetIsolatedBit0_PowerMax (void) |
double | GetIsolatedBit1_PowerMin (void) |
double | GetIsolatedBit0_PowerMean (void) |
double | GetIsolatedBit1_PowerMean (void) |
double | GetIsolatedBit0_PowerStdDev (void) |
double | GetIsolatedBit1_PowerStdDev (void) |
double | GetElecTimeDomainSNR_IsolatedBits (void) |
double | GetQ_FactorFromIsolatedBits (void) |
void | SetOptElecFiltersForGaussianStatistics (OptFilter *oOptFilter, ElecFilter *oElecFilter) |
void | ResetOptElecFiltersForGaussianStatistics (void) |
void | ResetOptElecFilterBandwidthsForGaussianStatistics (double FreqFWHM_OptFilter2, double f3dB_ElecFilter2) |
void | CheckGaussianStatisticsInitialization (string CallingMethod) |
double | GetMeanNoiseGaussianStatistics (double TotalNoiseSpectralDensity) |
Returns mean of noise <i_n> given by JLT05_22. | |
double | GetNoiseNoiseVarianceGaussianStatistics (double TotalNoiseSpectralDensity, double DOP_Noise) |
Returns noise-noise beating variance given by JLT05_24. | |
double | GetIntegralForNoiseNoiseVarianceGaussianStatistics (void) |
double | GetSignalNoiseVarianceForUnpolarizedNoiseGaussianStatistics (double Time, double TotalNoiseSpectralDensity) |
double | GetSignalNoiseVarianceForPolarizedSignalGaussianStatistics (double Time, double *UnitStokesSignal, double *UnitStokesNoise, double TotalNoiseSpectralDensity, double DOP_Noise) |
double | GetIntegralForSignalNoiseVariance (OptSignal *OptSignalA, OptSignal *OptSignalB, double TimeShiftA, double TimeShiftB, double Time) |
double | GetEnhancementFactor (double OSA_NoiseBandwidth) |
double | GetNormalizedEnhancementFactor (void) |
double | GetESNR_Mark_GaussianStatistics (double NoiseSpectralDensity) |
double | GetESNR_GaussianStatistics (double NoiseSpectralDensity) |
double | GetNormKcoeff1_GaussianStatistics (void) |
double | GetNormKcoeff0_GaussianStatistics (void) |
double | GetNormNumberNoiseModes_GaussianStatistics (void) |
double | GetCurrentExtinctionRatio_GaussianStatistics (void) |
double | GetQ_FactorFromESNR_GaussianStatistics (double ESNR) |
double | GetQ_FactorFromESNR_GaussianStatistics (double ESNR, double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetQ_FactorGaussianStatisticsWorstPattern (double NoiseSpectralDensity) |
double | GetQ_FactorGaussianStatisticsWorstPattern (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetQ_FactorGaussianStatisticsFirstPattern (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetQ_FactorGaussianStatisticsFromBER (double NoiseSpectralDensity) |
Added by Jonathan. | |
double | GetQ_FactorGaussianStatisticsFromBER (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetBER_GaussianStatisticsFromDecisionThreshold (double DecisionCurrent) |
double | GetBER_GaussianStatistics (void) |
double | MinimizeSqQ_FactorVersusBER (double Q_FactorTmp) |
double | brentHu (double ax, double bx, double cx, double(*f)(double), double tol, double *xmin) |
double | testsq (double ax) |
double | GetMeanASE_ASE (double NoiseSpectralDensity) |
double | GetMeanASE_ASE (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetStdDevASE_ASE (double NoiseSpectralDensity) |
double | GetStdDevASE_ASE (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetStdDevSignal_ASE_BitSlot (int BitSlot, double NoiseSpectralDensity) |
double | GetStdDevSignal_ASE_BitSlot (int BitSlot, double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetStdDevSignal_ASE_TimeIndex (int TargetIndexTime2, double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetStdDevWorstBit1_GaussianStatistics (double NoiseSpectralDensity) |
double | GetStdDevWorstBit1_GaussianStatistics (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetStdDevWorstBit0_GaussianStatistics (double NoiseSpectralDensity) |
double | GetStdDevWorstBit0_GaussianStatistics (double NoiseSpectralDensityX, double NoiseSpectralDensityY) |
double | GetMinCurrentBit1 (void) |
double | GetMaxCurrentBit0 (void) |
double | GetMinCurrentBit1 (int *BitSlotMinCurrentBit1) |
double | GetMaxCurrentBit0 (int *BitSlotMaxCurrentBit0) |
double | GetCurrentFirstBit1 (int *BitSlotCurrentFirstBit1) |
double | GetCurrentFirstBit0 (int *BitSlotCurrentFirstBit0) |
double | GetCurrentBitFromRecoveredSignal (int BitSlotCurrentBit) |
double | GetCurrentBit (int BitSlotCurrentBit) |
double | GetMeanCurrentIsolatedBit1 (void) |
double | GetMeanCurrentIsolatedBit0 (void) |
int | GetQtPoints (void) |
double | GetDeltaTime (void) |
int | GetBit (int BitSlot) |
double | GetBitLength (void) |
int | GetStringLength (void) |
void | InitPatternStats (void) |
Initializes parameters and memory if user is computing pattern stats. | |
void | AllocateMemoryForPatternStats (void) |
Called by ElecSignalStat::InitPatternStats. | |
void | ReleaseMemoryForPatternStats (void) |
Called by ElecSignalStat::~ElecSignalStat(). | |
void | ClearPatternStats (void) |
Sets all pattern stat variables to zero. | |
void | EnumeratePatterns (ofstream *OutFile) |
bool | GetPattern (int PatternIndex, int BitIndex) |
bool | GetCenterBitPattern (int PatternIndex) |
Returns the center bit of the pattern with index PaternIndex. | |
int | GetPatternIndex (bool *LocalPatternArray, int LengthOfPattern) |
void | UpdatePatternStats (int BitIndex, double PowerElecSignal) |
Call this function once per Monte Carlo run for each bit. | |
bool | PatternEquality (bool *PatternArray1, bool *PatternArray2, int LengthOfPattern) |
Tests for equality of two bit patterns. | |
void | PreparePatternStatsForOutput (void) |
void | WriteFilePatternStats (string OutFileName) |
Writes the pattern stats to a file. | |
Public Attributes | |
OptSignal * | oOptSignal |
Photodetector * | oPhotodetector |
double * | BitIntensity |
Private Member Functions | |
void | InitElecSignalStat (OptSignal *oOptSignal2, Photodetector *oPhotodetector2) |
This function is called by both constructors. | |
void | ComputePerformanceStatisticsNoTimeShift (void) |
void | UpdateMoments (int BitIndex, double PowerElecSignal) |
Internal function called by UpdatePerformanceStatistics. | |
void | ComputeTargetFreqIndex (void) |
Sets the target frequency for the clock recovery. | |
int | GetTargetIndexTime (void) |
Internal function that returns integer index of the clock recovery time. | |
double | GetTargetTime (void) |
Gets the double-precision target time associated with the clock recovery. | |
double | ComputePhaseTargetFreq (void) |
Returns the phase that will be used to compute the clock recovery time. | |
int | GetTargetIndexTimeBestQ_Factor (void) |
int | GetTargetIndexTimeBestMinEyeOpening (void) |
void | UpdateClock (void) |
Internal Function. | |
Private Attributes | |
int | ObjectInitialized |
bool | UseAbsCurrentFlag |
cfftw * | fft |
fftPowerMatrices | sfftPM |
typePulse | TypePulse |
int | qtPoints |
int | qtPointsLast |
double | DeltaTime |
double | TimeWindow |
double | DeltaFreq |
int | StringLength |
double | BitLength |
double | BitRateChann |
typeClockRecovery | TypeClockRecovery |
int | UseSmoothingToRecoverClockFlag |
double | GaussianSmoothingFWHM |
int | BitStringShift |
double | InputClockRecoveryTime |
double | ClockRecoveryTime |
double | ClockRecoveryTimeBeforeTimeShift |
int | TargetFreqIndex |
int | FirstTargetIndexTime |
int | SumRelTargetIndexTime |
int | NumCallsToUpdateClock |
double | SumTargetIndexTimesForUpdateClock |
int | qtRunsEyeDiagram |
int | qtRunsEyeDiagramFixedCLK |
double | Q_Factor |
double | BitErrorRate |
double | AmplitudeMargin |
double | MeanPower |
int | qtBit0 |
int | qtBit1 |
double | Bit0_PowerSum |
double | Bit1_PowerSum |
double | Bit0_PowerSquareSum |
double | Bit1_PowerSquareSum |
double | Bit0_PowerMax |
double | Bit1_PowerMin |
int | qtIsolatedBit0 |
int | qtIsolatedBit1 |
double | IsolatedBit0_PowerSum |
double | IsolatedBit1_PowerSum |
double | IsolatedBit0_PowerSquareSum |
double | IsolatedBit1_PowerSquareSum |
double | IsolatedBit0_PowerMax |
double | IsolatedBit1_PowerMin |
bool | InitializedGaussianStatisticsFlag |
double * | VariancesCurrentSignalNoiseBeating |
OptSignal * | oOptSignal1 |
OptSignal * | oOptSignal2 |
OptSignal * | oOptSignal3 |
OptSignal * | oOptSignalX |
OptFilter * | oOrigOptFilter |
OptFilter * | oOptFilter2 |
Photodetector * | oPhotodetector2 |
ElecFilter * | oElecFilter2 |
ElecSignalStat * | oElecSignalStat2 |
OptSignal * | oOptSignal4 |
OptFilter * | oOptFilter4 |
Photodetector * | oPhotodetector4 |
ElecFilter * | oElecFilter4 |
ElecSignalStat * | oElecSignalStat4 |
double | BER_GaussianStatistics |
double | Q_FactorPre |
double | NoiseSpectralDensityX_PD |
double | NoiseSpectralDensityY_PD |
bool | DoGaussianPDFsMonteCarloFlag |
int | NumTimeSlices |
double * | TimeSlices |
int * | TimeSliceIndices |
int * | BitString |
double * | StdDevCurrentMonteCarlo |
double * | MeanCurrentMonteCarlo |
double * | PowerSumBit |
double * | PowerSquareSumBit |
int * | qtBit |
double | MinCurrent |
double | MaxCurrent |
double | DeltaCurrent |
int | NumPointsCurrent |
double * | CurrentVector |
double * | BERGaussianPDFs |
double * | AverageGaussianPDFZeros |
double * | AverageGaussianPDFOnes |
double ** | GaussianPDFTimeSlices |
double * | GaussianPDFTimeSlicesStorageVec |
bool | ComputePatternStatsFlag |
int | PatternLength |
int | NumPatterns |
The number of patterns which is pow(2,PatternLength). | |
bool * | PatternArray |
A bool array to store a pattern. | |
double * | MeanPattern |
double * | StdDevPattern |
int * | NumOccurencesPattern |
Stores the total number of occurneces of each pattern. | |
double * | VoltageSumPattern |
Array to store the sums of the voltages for each pattern. | |
double * | VoltageSumSquaresPattern |
Array to store the sum of the squares of the voltages for each pattern. | |
double * | MaximumVoltagePattern |
Array to store the maximum voltage for each pattern. | |
double * | MinimumVoltagePattern |
Array to store the minimum voltage for each pattern. |
The ElecSignalStat class recovers the clock and computes the mean and standard deviation of the received electrically filtered current in each bit at the clock recovery time.
The class can be used in several different modes: For noise-free simulations, with noise in conjunction with Monte Carlo simulations, or with noise using the Gaussian statistics method for computing the first two moments in each bit given by the method of Winzer/Lima. Rather than using this class directly it is better to use one of the receiver classes: GaussianReceiver, ChiSquareReceiver, or ReceiverSemianalytical
The class was primarily written by Ivan Lima with additional code by Aurenice Lima, Brian Marks and John Zweck. The class was substantially edited and reorganized by John Zweck in Jan 2006.
The GaussianStatistics methods implement the equations in the paper
"A Receiver Model for Optical Fiber Communication Systems With Arbitrarily Polarized Noise," by
I. T. Lima, Jr., A. O. Lima, Y. Sun, H. Jiao, J. Zweck, C. R. Menyuk, and G. M. Carter, in
J. Lightwave Technol. 23 (3), pp. 1478--1490, 2005.
Equation numbers given in documentation refer to equation numbers in that paper, eg JLT05_22
ElecSignalStat::ElecSignalStat | ( | OptSignal * | oOptSignal2, | |
Photodetector * | oPhotodetector2 | |||
) |
Constructor without input file.
References InitElecSignalStat().
Referenced by SetOptElecFiltersForGaussianStatistics().
ElecSignalStat::ElecSignalStat | ( | string | InFileName, | |
OptSignal * | oOptSignal2, | |||
Photodetector * | oPhotodetector2 | |||
) |
Constructor that reads parameters from an input file.
Input parameters are
References AverageGaussianPDFOnes, AverageGaussianPDFZeros, BERGaussianPDFs, ClearElecSignalStat(), ComputePatternStatsFlag, ComputeTargetFreqIndex(), CurrentVector, DeltaCurrent, DoGaussianPDFsMonteCarloFlag, GaussianPDFTimeSlices, GaussianPDFTimeSlicesStorageVec, GaussianSmoothingFWHM, OptSignal::GetBitLength(), InitElecSignalStat(), InitPatternStats(), InputClockRecoveryTime, LogFile, LogFileSeparator(), LOWER_AND_UPPER, LOWER_ONLY, MANDATORY, MaxCurrent, MeanCurrentMonteCarlo, MinCurrent, NewDouble(), NewInt(), NO_BOUNDS, NumPointsCurrent, NumTimeSlices, oOptSignal, OPTIONAL_NO_WARNING, PatternLength, PowerSquareSumBit, PowerSumBit, qtBit, ReadDouble(), ReadInt(), StdDevCurrentMonteCarlo, StringLength, TimeSliceIndices, TimeSlices, TypeClockRecovery, USER_SET, UseSmoothingToRecoverClockFlag, and WriteTypeClockRecovery().
ElecSignalStat::~ElecSignalStat | ( | void | ) |
References AverageGaussianPDFOnes, AverageGaussianPDFZeros, BERGaussianPDFs, BitIntensity, ComputePatternStatsFlag, CurrentVector, DoGaussianPDFsMonteCarloFlag, GaussianPDFTimeSlices, GaussianPDFTimeSlicesStorageVec, InitializedGaussianStatisticsFlag, MeanCurrentMonteCarlo, NumTimeSlices, ObjectInitialized, oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal1, oOptSignal2, oOptSignal3, oOptSignal4, oOptSignalX, oPhotodetector2, PowerSquareSumBit, PowerSumBit, qtBit, ReleaseMemoryForPatternStats(), StdDevCurrentMonteCarlo, TimeSliceIndices, and TimeSlices.
Referenced by ChiSquareReceiver::~ChiSquareReceiver(), GaussianReceiver::~GaussianReceiver(), ReceiverSemiAnalytical::~ReceiverSemiAnalytical(), and ReceiverSubsystem::~ReceiverSubsystem().
void ElecSignalStat::AllocateMemoryForPatternStats | ( | void | ) |
Called by ElecSignalStat::InitPatternStats.
References MaximumVoltagePattern, MeanPattern, MinimumVoltagePattern, NumOccurencesPattern, NumPatterns, PatternArray, PatternLength, StdDevPattern, VoltageSumPattern, and VoltageSumSquaresPattern.
Referenced by InitPatternStats().
double ElecSignalStat::brentHu | ( | double | ax, | |
double | bx, | |||
double | cx, | |||
double(*)(double) | f, | |||
double | tol, | |||
double * | xmin | |||
) |
void ElecSignalStat::CheckGaussianStatisticsInitialization | ( | string | CallingMethod | ) |
References InitializedGaussianStatisticsFlag, LogFile, and LogFileSeparator().
Referenced by GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), and ResetOptElecFilterBandwidthsForGaussianStatistics().
void ElecSignalStat::ClearElecSignalStat | ( | void | ) |
Resets variables to correctly calculate statistics Use when doing parameter studies before change parameters
References Bit0_PowerMax, Bit0_PowerSquareSum, Bit0_PowerSum, Bit1_PowerMin, Bit1_PowerSquareSum, Bit1_PowerSum, ClearGaussianPDFsMonteCarlo(), ClearPatternStats(), ClockRecoveryTime, ComputePatternStatsFlag, DoGaussianPDFsMonteCarloFlag, IsolatedBit0_PowerMax, IsolatedBit0_PowerSquareSum, IsolatedBit0_PowerSum, IsolatedBit1_PowerMin, IsolatedBit1_PowerSquareSum, IsolatedBit1_PowerSum, NumCallsToUpdateClock, qtBit0, qtBit1, qtIsolatedBit0, qtIsolatedBit1, qtRunsEyeDiagram, and qtRunsEyeDiagramFixedCLK.
Referenced by ComputeEqualizedPerformanceStatistics(), ComputePerformanceStatistics(), ComputePerformanceStatisticsNoTimeShift(), ElecSignalStat(), InitElecSignalStat(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSubsystem::ReceiveSignalBackToBackCenterFreq(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), and ReceiverSubsystem::ReceiveSignalCenterFreq().
void ElecSignalStat::ClearGaussianPDFsMonteCarlo | ( | void | ) |
References PowerSquareSumBit, PowerSumBit, qtBit, and StringLength.
Referenced by ClearElecSignalStat().
void ElecSignalStat::ClearPatternStats | ( | void | ) |
Sets all pattern stat variables to zero.
Called by ElecSignalStat::ClearElecSignalStat(void) and ElecSignalStat::InitPatternStats(void)
References MaximumVoltagePattern, MeanPattern, MinimumVoltagePattern, NumOccurencesPattern, NumPatterns, PatternArray, StdDevPattern, VoltageSumPattern, and VoltageSumSquaresPattern.
Referenced by ClearElecSignalStat(), and InitPatternStats().
void ElecSignalStat::ComputeAndOutputMomentsFromMonteCarlo | ( | string | FileID | ) |
References GetClockRecoveryTime(), GetPowerMeanBit(), GetPowerStdDevBit(), MeanCurrentMonteCarlo, NumTimeSlices, StdDevCurrentMonteCarlo, and TimeSlices.
Referenced by OutputGaussianStatisticsFromMonteCarlo().
void ElecSignalStat::ComputeAveragePDFs | ( | void | ) |
References AverageGaussianPDFOnes, AverageGaussianPDFZeros, CurrentVector, GaussianPDFTimeSlices, BitString::GetBit(), MeanCurrentMonteCarlo, NumPointsCurrent, NumTimeSlices, OptSignal::oBitString, oOptSignal, pi, Quadrature(), sq(), sqrt(), and StdDevCurrentMonteCarlo.
Referenced by OutputGaussianStatisticsFromMonteCarlo().
void ElecSignalStat::ComputeEqualizedPerformanceStatistics | ( | void | ) |
A version of ComputePerformanceStatistics() used in conjunction with an ElecEqualizer object. The BitIntensity array must have been previously set by the ElecEqualizer object.
References ClearElecSignalStat(), and UpdateEqualizedPerformanceStatistics().
Referenced by ElecEqualizer::EqualizeBitIntensityWienerCplx(), and ElecEqualizer::EqualizeBitIntensityWienerReal().
void ElecSignalStat::ComputeMinimumBERAndDecisionThreshold | ( | string | FileID | ) |
References AverageGaussianPDFOnes, AverageGaussianPDFZeros, BERGaussianPDFs, CurrentVector, max(), NumPointsCurrent, Quadrature(), and WriteFilePairVectors().
Referenced by OutputGaussianStatisticsFromMonteCarlo().
void ElecSignalStat::ComputePerformanceStatistics | ( | void | ) |
Computes the intensity of received current in each bit and the mean and standard deviation of the received current in each bit at clock recovery time. Used in either noise-free simulations or with noise in Monte Carlo simulations.
References ClearElecSignalStat(), ClockRecoveryTime, ClockRecoveryTimeBeforeTimeShift, GetTargetTime(), oPhotodetector, Photodetector::TimeShiftSignal(), and UpdatePerformanceStatistics().
Referenced by GetCurrentBit(), GetCurrentExtinctionRatio_GaussianStatistics(), GetCurrentFirstBit0(), GetCurrentFirstBit1(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetMaxCurrentBit0(), GetMeanCurrentIsolatedBit0(), GetMeanCurrentIsolatedBit1(), GetMinCurrentBit1(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), ChiSquareReceiver::ReceiveNoiseFreeSignalAndRecoverClock(), ReceiverSubsystem::ReceivePreviouslyDemultiplexedSingleChannnel(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSubsystem::ReceiveSignalBackToBackCenterFreq(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), ReceiverSubsystem::ReceiveSignalCenterFreq(), ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical(), and GaussianReceiver::RecoverClockAndSetTimeSlices().
void ElecSignalStat::ComputePerformanceStatisticsNoTimeShift | ( | void | ) | [private] |
A version of ElecSignalStat::ComputePerformanceStatistics that does not involve time-shifting the signal. A private function that should ONLY be used by semianalytical methods
References ClearElecSignalStat(), and UpdatePerformanceStatistics().
Referenced by GetStdDevSignal_ASE_BitSlot().
double ElecSignalStat::ComputePhaseTargetFreq | ( | void | ) | [private] |
Returns the phase that will be used to compute the clock recovery time.
References BEST_MIN_EYE_OPENING, BEST_Q_FACTOR, BINARY_EXOR, Photodetector::ComputeWorkBinaryEXORElecSignal(), Photodetector::ComputeWorkContEXORElecSignal(), Photodetector::ComputeWorkDifferentiatedThenSquaredElecSignal(), Photodetector::ComputeWorkSumDelayedHalfBitPeriodThenSquare(), CONTINUOUS_EXOR, DIFFERENTIATE_SIGNAL, fftPowerMatrices::fPowerSignal, FREQ_DOUBLING, GetPhase(), LogFileAbortWithErrorMsg(), NRZ_HALF_SIGNAL_FREQ, oPhotodetector, RZ_SIGNAL_FREQ, sfftPM, TargetFreqIndex, TypeClockRecovery, USER_SET, and Photodetector::WorksfftPM.
Referenced by GetTargetIndexTime(), and GetTargetTime().
void ElecSignalStat::ComputeTargetFreqIndex | ( | void | ) | [private] |
Sets the target frequency for the clock recovery.
References BitRateChann, CRZ_GAUSS, CRZ_RCOS, CRZ_SIN_MZ, CW, INPUT_SEQUENCE, LogFileAbortWithErrorMsg(), NRZ, NRZ_HALF_SIGNAL_FREQ, RZ_GAUSS, RZ_GAUSS_PATTERN, RZ_SECH, RZ_SIGNAL_FREQ, TargetFreqIndex, TimeWindow, TypeClockRecovery, TypePulse, UMBC_RZ, and USER_SET.
Referenced by ElecSignalStat(), and InitElecSignalStat().
void ElecSignalStat::EnumeratePatterns | ( | ofstream * | OutFile | ) |
Writes all bit patterns of length PatternLength to a file together with their PatternIndicies which are the decimal integers corresponding to each of the bit patterns
References GetPattern(), GetPatternIndex(), NumPatterns, PatternArray, and PatternLength.
Referenced by InitPatternStats().
double ElecSignalStat::GetAmplitudeMargin | ( | void | ) | [inline] |
double ElecSignalStat::GetBER_GaussianStatistics | ( | void | ) |
References CGOLD, GetBER_GaussianStatisticsFromDecisionThreshold(), GetMaxCurrentBit0(), GetMinCurrentBit1(), ITMAX, nrerror(), oElecSignalStat4, SHFT, and SIGN.
Referenced by GetQ_FactorGaussianStatisticsFromBER().
double ElecSignalStat::GetBER_GaussianStatisticsFromDecisionThreshold | ( | double | DecisionCurrent | ) |
References erfccExtendedRange(), GetBit(), GetCurrentBit(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), OptSignal::GetStringLength(), NoiseSpectralDensityX_PD, NoiseSpectralDensityY_PD, oElecSignalStat4, oOptSignal, qtBit0, qtBit1, sq(), sqrt(), and StringLength.
Referenced by GetBER_GaussianStatistics().
int ElecSignalStat::GetBit | ( | int | BitSlot | ) | [inline] |
References BitString::GetBit(), OptSignal::oBitString, and oOptSignal.
Referenced by GetBER_GaussianStatisticsFromDecisionThreshold(), GetCurrentFirstBit0(), GetCurrentFirstBit1(), GetMaxCurrentBit0(), and GetMinCurrentBit1().
double ElecSignalStat::GetBit0_PowerMax | ( | void | ) | [inline] |
Maximum current in zeros. First call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References Bit0_PowerMax.
Referenced by ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetBit0_PowerMean | ( | void | ) | [inline] |
Mean of current in zeros at clock recovery time Must first call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References Bit0_PowerSum, and qtBit0.
Referenced by GetBit0_PowerStdDev(), GetClockCurrent(), GetElecTimeDomainSNR(), GetQ_Factor(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), WriteFileEyeDiagram(), WriteFileEyeDiagramFixedCLK(), ReceiverSubsystem::WriteStats(), ReceiverSemiAnalytical::WriteStats(), and ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetBit0_PowerStdDev | ( | void | ) | [inline] |
Standard deviation of current in zeros at clock recovery time Must first call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References Bit0_PowerSquareSum, GetBit0_PowerMean(), qtBit0, sq(), and sqrt().
Referenced by GetQ_Factor(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), ReceiverSubsystem::WriteStats(), ReceiverSemiAnalytical::WriteStats(), and ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetBit1_PowerMean | ( | void | ) | [inline] |
Mean of current in ones at clock recovery time Must first call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References Bit1_PowerSum, and qtBit1.
Referenced by GetBit1_PowerStdDev(), GetClockCurrent(), GetElecTimeDomainSNR(), GetQ_Factor(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), WriteFileEyeDiagram(), WriteFileEyeDiagramFixedCLK(), ReceiverSubsystem::WriteStats(), ReceiverSemiAnalytical::WriteStats(), and ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetBit1_PowerMin | ( | void | ) | [inline] |
Minimum current in zeros. First call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References Bit1_PowerMin.
Referenced by ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetBit1_PowerStdDev | ( | void | ) | [inline] |
Standard deviation of current in ones at clock recovery time Must first call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References Bit1_PowerSquareSum, GetBit1_PowerMean(), qtBit1, sq(), and sqrt().
Referenced by GetQ_Factor(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), ReceiverSubsystem::WriteStats(), ReceiverSemiAnalytical::WriteStats(), and ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetBitErrorRate | ( | void | ) | [inline] |
Returns the bit error rate computed from the mean and the standard deviation of the marks and spaces By Ivan Lima
References GetQ_Factor(), pi, sq(), and sqrt().
Referenced by ReceiverSubsystem::WriteStats(), and ReceiverSemiAnalytical::WriteStats().
double ElecSignalStat::GetBitErrorRate | ( | double | Q_Factor | ) | [inline] |
int ElecSignalStat::GetBitFromString | ( | int | ii | ) | [inline] |
References BitString::GetBit(), OptSignal::oBitString, and oOptSignal.
Referenced by ElecEqualizer::EqualizeBitIntensityWienerReal().
double ElecSignalStat::GetBitLength | ( | void | ) | [inline] |
References BitLength.
int ElecSignalStat::GetBitStringShift | ( | void | ) | [inline] |
References BitStringShift.
Referenced by GetStdDevSignal_ASE_BitSlot().
bool ElecSignalStat::GetCenterBitPattern | ( | int | PatternIndex | ) |
Returns the center bit of the pattern with index PaternIndex.
References GetPattern(), and PatternLength.
double ElecSignalStat::GetClockCurrent | ( | void | ) |
double ElecSignalStat::GetClockRecoveryTime | ( | void | ) | [inline] |
Sets and returns ClockRecoveryTime Call after ComputePerformanceStatistics()
References ClockRecoveryTime, and GetTargetTime().
Referenced by ComputeAndOutputMomentsFromMonteCarlo(), ReceiverSubsystem::ReceiveSignal(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical(), SetTimeSlices(), and ReceiverSubsystem::WriteStats().
double ElecSignalStat::GetClockRecoveryTimeBeforeTimeShift | ( | void | ) | [inline] |
double ElecSignalStat::GetClockTimeForMonteCarloEye | ( | void | ) |
Use in conjunction with WriteFileEyeDiagram() to generate eye diagram that can plot in Matlab
References DeltaTime, NumCallsToUpdateClock, Periodicity(), qtPoints, StringLength, and SumTargetIndexTimesForUpdateClock.
Referenced by ReceiverSemiAnalytical::WriteStats().
double ElecSignalStat::GetCurrentBit | ( | int | BitSlotCurrentBit | ) |
References BitIntensity, and ComputePerformanceStatistics().
Referenced by GetBER_GaussianStatisticsFromDecisionThreshold().
double ElecSignalStat::GetCurrentBitFromRecoveredSignal | ( | int | BitSlotCurrentBit | ) |
References BitIntensity.
double ElecSignalStat::GetCurrentExtinctionRatio_GaussianStatistics | ( | void | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMaxCurrentBit0(), GetMinCurrentBit1(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, and oPhotodetector2.
double ElecSignalStat::GetCurrentFirstBit0 | ( | int * | BitSlotCurrentFirstBit0 | ) |
References BitIntensity, ComputePerformanceStatistics(), GetBit(), and StringLength.
Referenced by GetQ_FactorGaussianStatisticsFirstPattern().
double ElecSignalStat::GetCurrentFirstBit1 | ( | int * | BitSlotCurrentFirstBit1 | ) |
References BitIntensity, ComputePerformanceStatistics(), GetBit(), and StringLength.
Referenced by GetQ_FactorGaussianStatisticsFirstPattern().
double ElecSignalStat::GetDeltaTime | ( | void | ) | [inline] |
References DeltaTime.
Referenced by ElecEqualizer::WriteFileEyeDiagram().
double ElecSignalStat::GetElecTimeDomainSNR | ( | void | ) | [inline] |
References GetBit0_PowerMean(), and GetBit1_PowerMean().
double ElecSignalStat::GetElecTimeDomainSNR_IsolatedBits | ( | void | ) | [inline] |
References GetIsolatedBit0_PowerMean(), and GetIsolatedBit1_PowerMean().
double ElecSignalStat::GetEnhancementFactor | ( | double | OSA_NoiseBandwidth | ) |
$$$$$$$$ This is a test where the effective noise bandwidth is $$ considered. I should comment it afterwards. $$ But do not delete these comments, please. $$ Definitively, this should not be here (IL 5/14/02) double RatioEffectiveNoiseBandwidth_BandwidthOptFilter = GetMeanASE_ASE(1.,oOptFilter,oElecFilter) /oOptFilter->GetFreqFWHM_OptFilter(); cout << "RatioEffectiveNoiseBandwidth_BandwidthOptFilter = " << RatioEffectiveNoiseBandwidth_BandwidthOptFilter << endl; EnhancementFactor /= RatioEffectiveNoiseBandwidth_BandwidthOptFilter; $$ End of test
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), OptSignal::GetAveragePower(), Photodetector::GetConvFactOptElecPhotod(), GetMeanASE_ASE(), GetMinCurrentBit1(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, and oPhotodetector2.
Referenced by ReceiverSemiAnalytical::GetLimaParameters().
double ElecSignalStat::GetESNR_GaussianStatistics | ( | double | NoiseSpectralDensity | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMaxCurrentBit0(), GetMeanASE_ASE(), GetMinCurrentBit1(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, and oPhotodetector2.
double ElecSignalStat::GetESNR_Mark_GaussianStatistics | ( | double | NoiseSpectralDensity | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMeanASE_ASE(), GetMinCurrentBit1(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, and oPhotodetector2.
double ElecSignalStat::GetIntegralForNoiseNoiseVarianceGaussianStatistics | ( | void | ) |
Returns I_{ASE-ASE} given by JLT05_26 using formula in JLT05_53 This integral represents the factor in the noise-noise beating variance that is independent of the noise statistics, and only depends on the optical and electrical filters.
References CheckGaussianStatisticsInitialization(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), fftMatrices::fOptSignalX, fftPowerMatrices::fPowerSignal, Photodetector::Freq2Time(), OptSignal::Freq2Time(), OptSignal::GenerateImpulseSignal(), Photodetector::GetDeltaFreq(), oElecFilter2, oOptFilter2, oOptSignal2, oOptSignal3, oPhotodetector2, qtPoints, OptSignal::sfftM, Photodetector::sfftPM, sq(), Photodetector::Time2Freq(), fftMatrices::tOptSignalX, and fftPowerMatrices::tPowerSignal.
Referenced by GetNoiseNoiseVarianceGaussianStatistics().
double ElecSignalStat::GetIntegralForSignalNoiseVariance | ( | OptSignal * | OptSignalA, | |
OptSignal * | OptSignalB, | |||
double | TimeShiftA, | |||
double | TimeShiftB, | |||
double | Time | |||
) |
Returns I_{S-ASE}(t) given by JLT05_29 using formula in JLT05_54 where e_() is replaced by OptSignalA shifted right by TimeShiftA and e_(') replaced by OptSignalB shifted right by TimeShiftB and Time is the time t.
Returns I_{S-ASE}(t) given by JLT05_29 using formula in JLT05_54 where e_() is replaced by OptSignalA and e_(') by OptSignalB and Time is the time t.
Integrals of this sort represent terms in the formula for the signal-noise beating variance that are independent of the noise statistics, and only depend on the optical and electrical filters, and the noise-free signal. This function is called by the various versions of GetSignalNoiseVariance with appropriate choices of OptSignalA, OptSignalB, and Time.
It is assumed that OptSignalA and OptSignalB are X-polarized!
The integral is
I(t) = 2 conj(SigA(w))SigB(z)r_0(z-w)h_e(t-w)h_e(t-z) dw dz
which we compute using the formula
I(t) = 2 invFT[ H_e FT[SigB invFT( FT(G_s) | H_0|^2) ]](t)
evaluated at s=t, where G_s(w) = conj(SigA(w))h_e(s-w).
References CheckGaussianStatisticsInitialization(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), fftMatrices::fOptSignalX, fftPowerMatrices::fPowerSignal, OptSignal::Freq2Time(), OptSignal::GenerateImpulseSignal(), Photodetector::GetDeltaFreq(), OptSignal::GetDeltaTime(), OptSignal::GetTimeWindow(), oElecFilter2, oOptFilter2, oOptSignal, oOptSignal1, oOptSignal2, oOptSignal3, oOptSignal4, oPhotodetector2, Periodicity(), qtPoints, OptSignal::sfftM, Photodetector::sfftPM, sq(), OptSignal::Time2Freq(), Photodetector::Time2Freq(), OptSignal::TimeShiftSignal(), fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, and fftPowerMatrices::tPowerSignal.
Referenced by GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized().
double ElecSignalStat::GetIsolatedBit0_PowerMax | ( | void | ) | [inline] |
References IsolatedBit0_PowerMax.
double ElecSignalStat::GetIsolatedBit0_PowerMean | ( | void | ) | [inline] |
References IsolatedBit0_PowerSum, and qtIsolatedBit0.
Referenced by GetElecTimeDomainSNR_IsolatedBits(), GetIsolatedBit0_PowerStdDev(), and GetQ_FactorFromIsolatedBits().
double ElecSignalStat::GetIsolatedBit0_PowerStdDev | ( | void | ) | [inline] |
References GetIsolatedBit0_PowerMean(), IsolatedBit0_PowerSquareSum, qtIsolatedBit0, sq(), and sqrt().
Referenced by GetQ_FactorFromIsolatedBits().
double ElecSignalStat::GetIsolatedBit1_PowerMean | ( | void | ) | [inline] |
References IsolatedBit1_PowerSum, and qtIsolatedBit1.
Referenced by GetElecTimeDomainSNR_IsolatedBits(), GetIsolatedBit1_PowerStdDev(), and GetQ_FactorFromIsolatedBits().
double ElecSignalStat::GetIsolatedBit1_PowerMin | ( | void | ) | [inline] |
References IsolatedBit1_PowerMin.
double ElecSignalStat::GetIsolatedBit1_PowerStdDev | ( | void | ) | [inline] |
References GetIsolatedBit1_PowerMean(), IsolatedBit1_PowerSquareSum, qtIsolatedBit1, sq(), and sqrt().
Referenced by GetQ_FactorFromIsolatedBits().
double ElecSignalStat::GetMaxCurrentBit0 | ( | int * | BitSlotMaxCurrentBit0 | ) |
References BitIntensity, ComputePerformanceStatistics(), GetBit(), and StringLength.
double ElecSignalStat::GetMaxCurrentBit0 | ( | void | ) |
double ElecSignalStat::GetMeanASE_ASE | ( | double | NoiseSpectralDensity | ) |
Referenced by GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), and ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical().
double ElecSignalStat::GetMeanASE_ASE | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References CheckGaussianStatisticsInitialization(), DeltaFreq, ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), fftPowerMatrices::fPowerSignal, OptSignal::GenerateImpulseSignal(), Photodetector::GetConvFactOptElecPhotod(), Photodetector::GetDeltaFreq(), OptSignal::GetDeltaFreq(), OptSignal::GetQtPoints(), oElecFilter2, oOptFilter2, oOptSignal2, oOptSignal3, oPhotodetector2, qtPoints, OptSignal::sfftM, Photodetector::sfftPM, sq(), Photodetector::Time2Freq(), fftMatrices::tOptSignalX, and fftPowerMatrices::tPowerSignal.
double ElecSignalStat::GetMeanCurrentIsolatedBit0 | ( | void | ) |
double ElecSignalStat::GetMeanCurrentIsolatedBit1 | ( | void | ) |
double ElecSignalStat::GetMeanNoiseGaussianStatistics | ( | double | TotalNoiseSpectralDensity | ) |
Returns mean of noise <i_n> given by JLT05_22.
The only difference is that we also multiply by real(H_e(0)) which was assumed to be 1 in the paper.
References CheckGaussianStatisticsInitialization(), DeltaFreq, ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), fftPowerMatrices::fPowerSignal, OptSignal::GenerateImpulseSignal(), Photodetector::GetConvFactOptElecPhotod(), Photodetector::GetDeltaFreq(), OptSignal::GetDeltaFreq(), OptSignal::GetQtPoints(), oElecFilter2, oOptFilter2, oOptSignal2, oOptSignal3, oPhotodetector2, qtPoints, OptSignal::sfftM, Photodetector::sfftPM, sq(), Photodetector::Time2Freq(), fftMatrices::tOptSignalX, and fftPowerMatrices::tPowerSignal.
Referenced by GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized(), and GaussianReceiver::ReceiveSignalUnpolarizedNoise().
double ElecSignalStat::GetMeanPower | ( | void | ) | [inline] |
double ElecSignalStat::GetMinAmplitudeMargin | ( | ) |
Returns power difference between smallest one and largest zero. Useful when studying PMD. Only to be used in noise-free simulations!
References Bit0_PowerMax, and Bit1_PowerMin.
Referenced by ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetMinCurrentBit1 | ( | void | ) |
Referenced by GetBER_GaussianStatistics(), GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff1_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsWorstPattern(), and GetStdDevWorstBit1_GaussianStatistics().
double ElecSignalStat::GetMinCurrentBit1 | ( | int * | BitSlotMinCurrentBit1 | ) |
References BitIntensity, ComputePerformanceStatistics(), GetBit(), and StringLength.
double ElecSignalStat::GetNoiseNoiseVarianceGaussianStatistics | ( | double | TotalNoiseSpectralDensity, | |
double | DOP_Noise | |||
) |
Returns noise-noise beating variance given by JLT05_24.
References Photodetector::GetConvFactOptElecPhotod(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), OptSignal::GetTypeSimulation(), oOptSignal, oPhotodetector2, and sq().
Referenced by GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized(), and GaussianReceiver::ReceiveSignalUnpolarizedNoise().
double ElecSignalStat::GetNormalizedEnhancementFactor | ( | void | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), OptSignal::GetAveragePower(), Photodetector::GetConvFactOptElecPhotod(), GetMinCurrentBit1(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, and oPhotodetector2.
Referenced by ReceiverSemiAnalytical::GetLimaParameters().
double ElecSignalStat::GetNormKcoeff0_GaussianStatistics | ( | void | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMaxCurrentBit0(), GetMeanASE_ASE(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
Referenced by ReceiverSemiAnalytical::GetLimaParameters().
double ElecSignalStat::GetNormKcoeff1_GaussianStatistics | ( | void | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMeanASE_ASE(), GetMinCurrentBit1(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
Referenced by ReceiverSemiAnalytical::GetLimaParameters().
double ElecSignalStat::GetNormNumberNoiseModes_GaussianStatistics | ( | void | ) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMeanASE_ASE(), GetStdDevASE_ASE(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, and sq().
Referenced by ReceiverSemiAnalytical::GetLimaParameters().
bool ElecSignalStat::GetPattern | ( | int | PatternIndex, | |
int | BitIndex | |||
) |
Converts the integer PatternIndex into binary format returning coefficient of pow(2,BitIndex) in this binary expansion
References PatternLength.
Referenced by EnumeratePatterns(), GetCenterBitPattern(), and WriteFilePatternStats().
int ElecSignalStat::GetPatternIndex | ( | bool * | LocalPatternArray, | |
int | LengthOfPattern | |||
) |
Returns the PatternIndex correpsonding to the bit string given by LocalPatternArray
Referenced by EnumeratePatterns(), and UpdatePatternStats().
double ElecSignalStat::GetPowerMeanBit | ( | int | BitIndex | ) |
Mean of current in bit with index BitIndex at clock recovery time. Must first call UpdatePerformanceStatistics(). For Monte Carlo.
References PowerSumBit, and qtBit.
Referenced by ComputeAndOutputMomentsFromMonteCarlo(), and GetPowerStdDevBit().
double ElecSignalStat::GetPowerStdDevBit | ( | int | BitIndex | ) |
Standard deviation of current in bit with index BitIndex at clock recovery time. Must first call UpdatePerformanceStatistics(). For Monte Carlo.
References GetPowerMeanBit(), PowerSquareSumBit, qtBit, sq(), and sqrt().
Referenced by ComputeAndOutputMomentsFromMonteCarlo().
double ElecSignalStat::GetQ_Factor | ( | void | ) |
Returns the Q-factor computed from the mean and the standard deviation of the marks and spaces By Ivan Lima
References GetBit0_PowerMean(), GetBit0_PowerStdDev(), GetBit1_PowerMean(), and GetBit1_PowerStdDev().
Referenced by GetBitErrorRate(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), ReceiverSubsystem::WriteStats(), ReceiverSemiAnalytical::WriteStats(), and ReceiverSubsystem::WriteStatsCenterFreq().
double ElecSignalStat::GetQ_FactorFromESNR_GaussianStatistics | ( | double | ESNR | ) |
double ElecSignalStat::GetQ_FactorFromESNR_GaussianStatistics | ( | double | ESNR, | |
double | NoiseSpectralDensityX, | |||
double | NoiseSpectralDensityY | |||
) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMaxCurrentBit0(), GetMeanASE_ASE(), GetMinCurrentBit1(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), OptSignal::GetTotalStokesParameters(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
double ElecSignalStat::GetQ_FactorFromIsolatedBits | ( | void | ) |
double ElecSignalStat::GetQ_FactorGaussianStatisticsFirstPattern | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References AmplitudeMargin, CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetCurrentFirstBit0(), GetCurrentFirstBit1(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
double ElecSignalStat::GetQ_FactorGaussianStatisticsFromBER | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References BER_GaussianStatistics, CGOLD, ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), erfccExtendedRange(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetBER_GaussianStatistics(), ITMAX, MinimizeSqQ_FactorVersusBER(), NoiseSpectralDensityX_PD, NoiseSpectralDensityY_PD, nrerror(), oElecFilter2, oElecFilter4, oElecSignalStat2, oElecSignalStat4, oOptFilter2, oOptFilter4, oOptSignal, oOptSignal2, oOptSignal4, oPhotodetector2, oPhotodetector4, Q_Factor, Q_FactorPre, SHFT, SIGN, and sqrt().
double ElecSignalStat::GetQ_FactorGaussianStatisticsFromBER | ( | double | NoiseSpectralDensity | ) |
Added by Jonathan.
double ElecSignalStat::GetQ_FactorGaussianStatisticsWorstPattern | ( | double | NoiseSpectralDensity | ) |
double ElecSignalStat::GetQ_FactorGaussianStatisticsWorstPattern | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References AmplitudeMargin, CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMaxCurrentBit0(), GetMinCurrentBit1(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
double ElecSignalStat::GetQtBit0 | ( | void | ) | [inline] |
Number of zeros. First call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References qtBit0.
Referenced by ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), ReceiverSubsystem::WriteStats(), and ReceiverSemiAnalytical::WriteStats().
double ElecSignalStat::GetQtBit1 | ( | void | ) | [inline] |
Number of ones. First call ComputePerformanceStatistics() or UpdatePerformanceStatistics()
References qtBit1.
Referenced by ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), ReceiverSubsystem::WriteStats(), and ReceiverSemiAnalytical::WriteStats().
double ElecSignalStat::GetQtIsolatedBit0 | ( | void | ) | [inline] |
Statistics obtained using isolated zeros and ones.
References qtIsolatedBit0.
double ElecSignalStat::GetQtIsolatedBit1 | ( | void | ) | [inline] |
References qtIsolatedBit1.
int ElecSignalStat::GetQtPoints | ( | void | ) | [inline] |
References qtPoints.
Referenced by ElecEqualizer::WriteFileEyeDiagram().
double ElecSignalStat::GetSignalNoiseVarianceForPolarizedSignalGaussianStatistics | ( | double | Time, | |
double * | UnitStokesSignal, | |||
double * | UnitStokesNoise, | |||
double | TotalNoiseSpectralDensity, | |||
double | DOP_Noise | |||
) |
Returns the signal-noise beating variance at time Time for a polarized VECTOR signal in case of (possibly) partially polarized Gaussian white noise, using JLT05_32.
Returns the signal-noise beating variance at time Time for a polarized VECTOR signal in case of (possibly) partially polarized Gaussian white noise, using JLT05_32. oOptSignal is assumed to be X-polarized!
References sq().
double ElecSignalStat::GetSignalNoiseVarianceForUnpolarizedNoiseGaussianStatistics | ( | double | Time, | |
double | TotalNoiseSpectralDensity | |||
) |
Returns the signal-noise beating variance in case noise is unpolarized for an arbitrary signal.
Returns the signal-noise beating variance at time Time for an arbitrary signal in case the noise is unpolarized Gaussian white noise, using (a variant of) JLT05_32.
References sq().
cplx* ElecSignalStat::GetSignalTimeDomain | ( | void | ) | [inline] |
References sfftPM, and fftPowerMatrices::tPowerSignal.
Referenced by ElecEqualizer::WriteFileEyeDiagram().
double ElecSignalStat::GetStdDevASE_ASE | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References CheckGaussianStatisticsInitialization(), DeltaFreq, ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), fftMatrices::fOptSignalX, fftPowerMatrices::fPowerSignal, Photodetector::Freq2Time(), OptSignal::Freq2Time(), OptSignal::GenerateImpulseSignal(), Photodetector::GetConvFactOptElecPhotod(), Photodetector::GetDeltaFreq(), OptSignal::GetDeltaFreq(), OptSignal::GetQtPoints(), oElecFilter2, oOptFilter2, oOptSignal2, oOptSignal3, oPhotodetector2, qtPoints, OptSignal::sfftM, Photodetector::sfftPM, sq(), sqrt(), Photodetector::Time2Freq(), fftMatrices::tOptSignalX, and fftPowerMatrices::tPowerSignal.
double ElecSignalStat::GetStdDevASE_ASE | ( | double | NoiseSpectralDensity | ) |
Referenced by GetBER_GaussianStatisticsFromDecisionThreshold(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), and ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical().
double ElecSignalStat::GetStdDevSignal_ASE_BitSlot | ( | int | BitSlot, | |
double | NoiseSpectralDensity | |||
) |
References CheckGaussianStatisticsInitialization().
Referenced by GetBER_GaussianStatisticsFromDecisionThreshold(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevWorstBit0_GaussianStatistics(), and GetStdDevWorstBit1_GaussianStatistics().
double ElecSignalStat::GetStdDevSignal_ASE_BitSlot | ( | int | BitSlot, | |
double | NoiseSpectralDensityX, | |||
double | NoiseSpectralDensityY | |||
) |
oElecSignalStat2->ComputePerformanceStatistics();
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatisticsNoTimeShift(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetBitStringShift(), GetStdDevSignal_ASE_TimeIndex(), GetTargetIndexTime(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, Periodicity(), qtPoints, and StringLength.
double ElecSignalStat::GetStdDevSignal_ASE_TimeIndex | ( | int | TargetIndexTime2, | |
double | NoiseSpectralDensityX, | |||
double | NoiseSpectralDensityY | |||
) |
References CheckGaussianStatisticsInitialization(), DeltaFreq, ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, fftPowerMatrices::fPowerSignal, OptSignal::Freq2Time(), OptSignal::GenerateImpulseSignal(), Photodetector::GetConvFactOptElecPhotod(), Photodetector::GetDeltaFreq(), OptSignal::GetDeltaFreq(), OptSignal::GetQtPoints(), oElecFilter2, oOptFilter2, oOptSignal, oOptSignal1, oOptSignal2, oOptSignal3, oPhotodetector2, Periodicity(), qtPoints, OptSignal::sfftM, Photodetector::sfftPM, sq(), sqrt(), OptSignal::Time2Freq(), Photodetector::Time2Freq(), fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, and fftPowerMatrices::tPowerSignal.
Referenced by GetStdDevSignal_ASE_BitSlot(), and ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical().
double ElecSignalStat::GetStdDevWorstBit0_GaussianStatistics | ( | double | NoiseSpectralDensity | ) |
double ElecSignalStat::GetStdDevWorstBit0_GaussianStatistics | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMaxCurrentBit0(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
double ElecSignalStat::GetStdDevWorstBit1_GaussianStatistics | ( | double | NoiseSpectralDensity | ) |
double ElecSignalStat::GetStdDevWorstBit1_GaussianStatistics | ( | double | NoiseSpectralDensityX, | |
double | NoiseSpectralDensityY | |||
) |
References CheckGaussianStatisticsInitialization(), ComputePerformanceStatistics(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptFilter::FilterOptSignal(), GetMinCurrentBit1(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), oElecFilter2, oElecSignalStat2, oOptFilter2, oOptSignal, oOptSignal2, oPhotodetector2, sq(), and sqrt().
int ElecSignalStat::GetStringLength | ( | void | ) | [inline] |
References StringLength.
Referenced by ElecEqualizer::InitElecEqualizer().
int ElecSignalStat::GetTargetIndexTime | ( | void | ) | [private] |
Internal function that returns integer index of the clock recovery time.
References BEST_MIN_EYE_OPENING, BEST_Q_FACTOR, BINARY_EXOR, ComputePhaseTargetFreq(), CONTINUOUS_EXOR, DeltaTime, DIFFERENTIATE_SIGNAL, FREQ_DOUBLING, GetTargetIndexTimeBestMinEyeOpening(), GetTargetIndexTimeBestQ_Factor(), InputClockRecoveryTime, LogFileAbortWithErrorMsg(), NRZ_HALF_SIGNAL_FREQ, pi, qtPoints, RZ_SIGNAL_FREQ, StringLength, TypeClockRecovery, and USER_SET.
Referenced by GetStdDevSignal_ASE_BitSlot(), UpdateClock(), UpdatePerformanceStatistics(), WriteFileEyeDiagram(), and WriteFileEyeDiagramFixedCLK().
int ElecSignalStat::GetTargetIndexTimeBestMinEyeOpening | ( | void | ) | [private] |
References BitString::GetBit(), OptSignal::oBitString, oOptSignal, Periodicity(), qtPoints, sfftPM, sq(), sqrt(), StringLength, fftPowerMatrices::tPowerSignal, and UseAbsCurrentFlag.
Referenced by GetTargetIndexTime(), and GetTargetTime().
int ElecSignalStat::GetTargetIndexTimeBestQ_Factor | ( | void | ) | [private] |
References BitString::GetBit(), OptSignal::oBitString, oOptSignal, Periodicity(), qtPoints, sfftPM, sq(), sqrt(), StringLength, fftPowerMatrices::tPowerSignal, and UseAbsCurrentFlag.
Referenced by GetTargetIndexTime(), and GetTargetTime().
double ElecSignalStat::GetTargetTime | ( | void | ) | [private] |
Gets the double-precision target time associated with the clock recovery.
References BEST_MIN_EYE_OPENING, BEST_Q_FACTOR, BINARY_EXOR, BitRateChann, ComputePhaseTargetFreq(), CONTINUOUS_EXOR, DeltaTime, DIFFERENTIATE_SIGNAL, FREQ_DOUBLING, GetTargetIndexTimeBestMinEyeOpening(), GetTargetIndexTimeBestQ_Factor(), InputClockRecoveryTime, LogFileAbortWithErrorMsg(), NRZ_HALF_SIGNAL_FREQ, pi, RZ_SIGNAL_FREQ, TypeClockRecovery, and USER_SET.
Referenced by ComputePerformanceStatistics(), and GetClockRecoveryTime().
void ElecSignalStat::InitElecSignalStat | ( | OptSignal * | oOptSignal2, | |
Photodetector * | oPhotodetector2 | |||
) | [private] |
This function is called by both constructors.
References BitIntensity, BitLength, BitRateChann, ClearElecSignalStat(), ComputePatternStatsFlag, ComputeTargetFreqIndex(), cfftw::delta_f, DeltaFreq, DeltaTime, DoGaussianPDFsMonteCarloFlag, OptSignal::fft, fft, FREQ_DOUBLING, GaussianSmoothingFWHM, OptSignal::GetBitLength(), OptSignal::GetDeltaFreq(), BitString::GetStringLength(), OptSignal::GetTypePulse(), cfftw::give_N(), InitializedGaussianStatisticsFlag, LogFile, OptSignal::oBitString, ObjectInitialized, oOptSignal, oPhotodetector, Q_FactorPre, qtPoints, Photodetector::sfftPM, sfftPM, StringLength, TimeWindow, TypeClockRecovery, TypePulse, UseAbsCurrentFlag, UseSmoothingToRecoverClockFlag, and WriteTypeClockRecovery().
Referenced by ElecSignalStat().
void ElecSignalStat::InitPatternStats | ( | void | ) |
Initializes parameters and memory if user is computing pattern stats.
Called by the constructor ElecSignalStat(string, OptSignal,Photodetector)
References AllocateMemoryForPatternStats(), ClearPatternStats(), EnumeratePatterns(), LogFile, LogFileSeparator(), NumPatterns, and PatternLength.
Referenced by ElecSignalStat().
double ElecSignalStat::MinimizeSqQ_FactorVersusBER | ( | double | Q_FactorTmp | ) |
References BER_GaussianStatistics, erfccExtendedRange(), and sqrt().
Referenced by GetQ_FactorGaussianStatisticsFromBER().
void ElecSignalStat::OutputGaussianStatisticsFromMonteCarlo | ( | string | FileID | ) |
For use in conjunction with Monte Carlo simulations with noise. Must set DoGaussianPDFsMonteCarloFlag = 1 and other required parameters in ElecSignalStat infile and call constructor: ElecSignalStat::ElecSignalStat(string InFileName,OptSignal *oOptSignal2, Photodetector *oPhotodetector2)
First call UpdatePerformanceStatistics() many times within a loop. Outputs mean and stddev of current in each bit, computes Gaussian approximation to pdf in each bit, computes average pdfs of zeros and ones, based on the individual Gaussian approximations, and finally computes BER from these average pdfs. Outputs all the above statistics to files with prefix FileID. Note FileID should be prefixed by JobDir and JobName.
For use in conjunction with Monte Carlo simulations with noise. Must set DoGaussianPDFsMonteCarloFlag = 1 and other required parameters in ElecSignalStat infile and call constructor: ElecSignalStat::ElecSignalStat(string InFileName,OptSignal *oOptSignal2, Photodetector *oPhotodetector2)
First call UpdatePerformanceStatistics() many times within a loop. Outputs mean and stddev of current in each bit, computes Gaussian approximation to pdf in each bit, computes average pdfs of zeros and ones, based on the individual Gaussian approximations, and finally computes BER from these average pdfs. Outputs all the above statistics to files.
References ComputeAndOutputMomentsFromMonteCarlo(), ComputeAveragePDFs(), ComputeMinimumBERAndDecisionThreshold(), DoGaussianPDFsMonteCarloFlag, SetTimeSlices(), and WriteFilePDFTimeSlicesAndAveragePDFs().
bool ElecSignalStat::PatternEquality | ( | bool * | PatternArray1, | |
bool * | PatternArray2, | |||
int | LengthOfPattern | |||
) |
Tests for equality of two bit patterns.
void ElecSignalStat::PreparePatternStatsForOutput | ( | void | ) |
Computes the means and standard deviations for the center bit in each pattern from the arrays VoltageSumPattern and VoltageSumSquaresPattern
Called by ElecSignalStat::WriteFilePatternStats(string)
References MeanPattern, NumOccurencesPattern, NumPatterns, sq(), sqrt(), StdDevPattern, VoltageSumPattern, and VoltageSumSquaresPattern.
Referenced by WriteFilePatternStats().
void ElecSignalStat::ReleaseMemoryForPatternStats | ( | void | ) |
Called by ElecSignalStat::~ElecSignalStat().
References MaximumVoltagePattern, MeanPattern, MinimumVoltagePattern, NumOccurencesPattern, PatternArray, StdDevPattern, VoltageSumPattern, and VoltageSumSquaresPattern.
Referenced by ~ElecSignalStat().
void ElecSignalStat::ResetOptElecFilterBandwidthsForGaussianStatistics | ( | double | FreqFWHM_OptFilter2, | |
double | f3dB_ElecFilter2 | |||
) |
To be used in conjunction with ResetOptElecFiltersForGaussianStatistics (JZ, April 2004)
References CheckGaussianStatisticsInitialization(), oElecFilter2, oOptFilter2, ElecFilter::SetFreqFWHM_ElecFilter(), and OptFilter::SetFreqFWHM_OptFilter().
Referenced by ReceiverSemiAnalytical::GetLimaParameters().
void ElecSignalStat::ResetOptElecFiltersForGaussianStatistics | ( | void | ) |
Use this method if you want to use the same ElecSignalStat object to compute the GaussianStatistics for oOptSignal at different times during your simulation (JZ, April 2003).
Call each time system parameters change
Use this method if you want to use the same ElecSignalStat object to compute the GaussianStatistics for oOptSignal at different times during your simulation (JZ, April 2003)
Call each time system parameters change.
References OptFilter::GetRelativeCenterFreqOptFilter(), oOptFilter2, oOptSignal, oOptSignal1, oOptSignal2, oOptSignal3, oOptSignal4, oOptSignalX, oOrigOptFilter, oPhotodetector2, Photodetector::SetOptSignal(), and OptFilter::SetRelativeCenterFreq().
Referenced by ReceiverSemiAnalytical::GetLimaParameters(), GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized(), ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical(), and GaussianReceiver::ReceiveSignalUnpolarizedNoise().
void ElecSignalStat::SetOptElecFiltersForGaussianStatistics | ( | OptFilter * | oOptFilter, | |
ElecFilter * | oElecFilter | |||
) |
Constructs auxilliary optical and the electrical filters that will be used to compute the Gaussian statistics.
Constructs auxilliary optical and the electrical filters that will be used to compute the semi-analytical statistics.
The method initializes auxiliary objects that are used throughout the computation. The method should be called prior to the first time in the application code that the semi-analytical statistics are calculated . See also ElecSignalStat::ResetOptElecFiltersForGaussianStatistics().
By: Ivan Lima (5/16/02)
References ElecSignalStat(), OptSignal::GetNumChannels(), InitializedGaussianStatisticsFlag, LogFile, LogFileSeparator(), oElecFilter2, oElecFilter4, oElecSignalStat2, oElecSignalStat4, oOptFilter2, oOptFilter4, oOptSignal, oOptSignal1, oOptSignal2, oOptSignal3, oOptSignal4, oOptSignalX, oOrigOptFilter, oPhotodetector, oPhotodetector2, oPhotodetector4, OptSignal::ReduceToSingleChannel(), Photodetector::SetOptSignal(), StringLength, and VariancesCurrentSignalNoiseBeating.
Referenced by GaussianReceiver::GaussianReceiver(), ReceiverSubsystem::InitSimplifiedReceiver(), and ReceiverSemiAnalytical::ReceiverSemiAnalytical().
void ElecSignalStat::SetTimeSlices | ( | void | ) |
void ElecSignalStat::SetUseAbsCurrentFlag | ( | bool | Value | ) |
Use after constructor if want to take abs(Current) rather than real(Current) when computing statistics. (Mostly for backward compatibility
Instead of taking abs(Current) to get stats we take real(Current). This allows for negative currents, which could arise because of response function of electric filter or because of shot noise in photodetector.
To allow for backward compatibility, there is an optional flag called UseAbsCurrentFlag. If this flag is 1, then the code takes abs(Current). If the flag is 0 the code takes real(Current).
The constructor sets UseAbsCurrentFlag = 0 since this is the physically correct thing to do. If you want UseAbsCurrentFlag = 1 SetUseAbsCurrentFlag(1) straight after the constructor is called.
References LogFile, and UseAbsCurrentFlag.
double ElecSignalStat::testsq | ( | double | ax | ) |
References sq().
void ElecSignalStat::UpdateClock | ( | void | ) | [private] |
Internal Function.
References GetTargetIndexTime(), NumCallsToUpdateClock, and SumTargetIndexTimesForUpdateClock.
Referenced by UpdateEqualizedPerformanceStatistics(), and UpdatePerformanceStatistics().
void ElecSignalStat::UpdateEqualizedPerformanceStatistics | ( | void | ) |
A version of UpdatePerformanceStatistics() used in conjunction with an ElecEqualizer object. The BitIntensity array must have been previously set by the ElecEqualizer object.
References BitIntensity, BitString::GetBit(), OptSignal::oBitString, ObjectInitialized, oOptSignal, Periodicity(), sq(), sqrt(), StringLength, UpdateClock(), and UpdateMoments().
Referenced by ComputeEqualizedPerformanceStatistics().
void ElecSignalStat::UpdateMoments | ( | int | BitIndex, | |
double | PowerElecSignal | |||
) | [private] |
Internal function called by UpdatePerformanceStatistics.
References Bit0_PowerMax, Bit0_PowerSquareSum, Bit0_PowerSum, Bit1_PowerMin, Bit1_PowerSquareSum, Bit1_PowerSum, ComputePatternStatsFlag, DoGaussianPDFsMonteCarloFlag, BitString::GetBit(), IsolatedBit0_PowerMax, IsolatedBit0_PowerSquareSum, IsolatedBit0_PowerSum, IsolatedBit1_PowerMin, IsolatedBit1_PowerSquareSum, IsolatedBit1_PowerSum, OptSignal::oBitString, oOptSignal, Periodicity(), PowerSquareSumBit, PowerSumBit, qtBit, qtBit0, qtBit1, qtIsolatedBit0, qtIsolatedBit1, sq(), StringLength, and UpdatePatternStats().
Referenced by UpdateEqualizedPerformanceStatistics(), and UpdatePerformanceStatistics().
void ElecSignalStat::UpdatePatternStats | ( | int | BitIndex, | |
double | PowerElecSignal | |||
) |
Call this function once per Monte Carlo run for each bit.
Called by ElecSignalStat::UpdateMoments
Updates values of
References BitString::GetBit(), GetPatternIndex(), MaximumVoltagePattern, MinimumVoltagePattern, NumOccurencesPattern, OptSignal::oBitString, oOptSignal, PatternArray, PatternLength, sq(), StringLength, VoltageSumPattern, VoltageSumSquaresPattern, and OptSignal::WrapPeriodically().
Referenced by UpdateMoments().
void ElecSignalStat::UpdatePerformanceStatistics | ( | void | ) |
Computes intensity of received current in each bit at clock recovery time and updates variables that store mean and standard deviation of current in each bit. Used in Monte Carlo simulations with noise. Called by ComputePerformanceStatistics().
Calculates intensity of received current in each bit at clock recovery time and updates variables that store mean and standard deviation of current in each bit. Used in Monte Carlo simulations.
Method first finds optimal correlatation between the bit string and the bit intensity array which gives the power of the elecectrically filtered signal at the recovery time.
The idea is that we want to find the shift in the bit sequence which maximizes the correlation between these two vectors.
If the match is not optimal then (1) Mean Ones decreases from optimal value as some physical ones are not lined up with logical ones. (2) Mean Zeros increases. (3) So Mean Ones - Means Zeros decreases (4) StdDev ones and zeros will both increase (5) So Q = Ratio (3)/(4) will be forced to decrease
So our algorithm is to walk through the shifts of the bit string computing Q values and choose the maximal Q value.
One reason you need to do this correlation is that different channels travel at different speeds relative to the central frequency. One way to test this method is to see that the computation of Q for a given physical channel is invariant to shifts in the central frequency of the slowly-varying envelope approximation. To get good agreement though you need DeltaTime to be small enough.
Another reason why one needs to do this correlation is because the PMD can shift the bits beyound one bit period. Hence, one could find a Q factor much smaller than it really is.
References BitIntensity, BitStringShift, BitString::GetBit(), GetTargetIndexTime(), OptSignal::oBitString, ObjectInitialized, oOptSignal, Periodicity(), qtPoints, sfftPM, sq(), sqrt(), StringLength, fftPowerMatrices::tPowerSignal, UpdateClock(), UpdateMoments(), and UseAbsCurrentFlag.
Referenced by ComputePerformanceStatistics(), ComputePerformanceStatisticsNoTimeShift(), ReceiverSubsystem::ReceiveSignal(), and ReceiverSemiAnalytical::ReceiveSignalMonteCarlo().
void ElecSignalStat::WriteFileEyeDiagram | ( | string | outFile | ) |
Writes an eye diagram to a file. Useful with noise-free simulations.
References DeltaTime, FirstTargetIndexTime, GetBit0_PowerMean(), GetBit1_PowerMean(), GetTargetIndexTime(), ObjectInitialized, Periodicity(), qtPoints, qtRunsEyeDiagram, sfftPM, StringLength, SumRelTargetIndexTime, and fftPowerMatrices::tPowerSignal.
Referenced by ReceiverSubsystem::ReceiveSignal(), ReceiverSubsystem::ReceiveSignalBackToBack(), ReceiverSubsystem::ReceiveSignalBackToBackCenterFreq(), ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo(), and ReceiverSubsystem::ReceiveSignalCenterFreq().
void ElecSignalStat::WriteFileEyeDiagramFixedCLK | ( | string | outFile | ) |
Writes an eye diagram to a file. Useful with Monte Carlo simulations with noise.
References DeltaTime, GetBit0_PowerMean(), GetBit1_PowerMean(), GetTargetIndexTime(), ObjectInitialized, Periodicity(), qtPoints, qtRunsEyeDiagramFixedCLK, sfftPM, StringLength, and fftPowerMatrices::tPowerSignal.
void ElecSignalStat::WriteFilePairVectors | ( | double * | x, | |
double * | y, | |||
int | dim, | |||
string | OutFileName | |||
) |
Referenced by ComputeMinimumBERAndDecisionThreshold(), and WriteFilePDFTimeSlicesAndAveragePDFs().
void ElecSignalStat::WriteFilePatternStats | ( | string | OutFileName | ) |
Writes the pattern stats to a file.
References GetPattern(), MaximumVoltagePattern, MeanPattern, MinimumVoltagePattern, NumOccurencesPattern, NumPatterns, PatternArray, PatternLength, PreparePatternStatsForOutput(), and StdDevPattern.
void ElecSignalStat::WriteFilePDFTimeSlicesAndAveragePDFs | ( | string | FileID | ) |
References AverageGaussianPDFOnes, AverageGaussianPDFZeros, CurrentVector, GaussianPDFTimeSlices, NumPointsCurrent, NumTimeSlices, and WriteFilePairVectors().
Referenced by OutputGaussianStatisticsFromMonteCarlo().
string ElecSignalStat::WriteTypeClockRecovery | ( | void | ) |
Returns the type of the clock recovery method.
References BEST_MIN_EYE_OPENING, BEST_Q_FACTOR, BINARY_EXOR, CONTINUOUS_EXOR, DIFFERENTIATE_SIGNAL, FREQ_DOUBLING, NRZ_HALF_SIGNAL_FREQ, RZ_SIGNAL_FREQ, TypeClockRecovery, and USER_SET.
Referenced by ElecSignalStat(), and InitElecSignalStat().
double ElecSignalStat::AmplitudeMargin [private] |
double* ElecSignalStat::AverageGaussianPDFOnes [private] |
double* ElecSignalStat::AverageGaussianPDFZeros [private] |
double ElecSignalStat::BER_GaussianStatistics [private] |
Referenced by GetQ_FactorGaussianStatisticsFromBER(), and MinimizeSqQ_FactorVersusBER().
double* ElecSignalStat::BERGaussianPDFs [private] |
Referenced by ComputeMinimumBERAndDecisionThreshold(), ElecSignalStat(), and ~ElecSignalStat().
double ElecSignalStat::Bit0_PowerMax [private] |
Referenced by ClearElecSignalStat(), GetBit0_PowerMax(), GetMinAmplitudeMargin(), and UpdateMoments().
double ElecSignalStat::Bit0_PowerSquareSum [private] |
Referenced by ClearElecSignalStat(), GetBit0_PowerStdDev(), and UpdateMoments().
double ElecSignalStat::Bit0_PowerSum [private] |
Referenced by ClearElecSignalStat(), GetBit0_PowerMean(), and UpdateMoments().
double ElecSignalStat::Bit1_PowerMin [private] |
Referenced by ClearElecSignalStat(), GetBit1_PowerMin(), GetMinAmplitudeMargin(), and UpdateMoments().
double ElecSignalStat::Bit1_PowerSquareSum [private] |
Referenced by ClearElecSignalStat(), GetBit1_PowerStdDev(), and UpdateMoments().
double ElecSignalStat::Bit1_PowerSum [private] |
Referenced by ClearElecSignalStat(), GetBit1_PowerMean(), and UpdateMoments().
double ElecSignalStat::BitErrorRate [private] |
double* ElecSignalStat::BitIntensity |
Referenced by ElecEqualizer::EqualizeBitIntensityWienerCplx(), ElecEqualizer::EqualizeBitIntensityWienerReal(), GetCurrentBit(), GetCurrentBitFromRecoveredSignal(), GetCurrentFirstBit0(), GetCurrentFirstBit1(), GetMaxCurrentBit0(), GetMeanCurrentIsolatedBit0(), GetMeanCurrentIsolatedBit1(), GetMinCurrentBit1(), InitElecSignalStat(), UpdateEqualizedPerformanceStatistics(), UpdatePerformanceStatistics(), and ~ElecSignalStat().
double ElecSignalStat::BitLength [private] |
Referenced by GetBitLength(), and InitElecSignalStat().
double ElecSignalStat::BitRateChann [private] |
Referenced by ComputeTargetFreqIndex(), GetTargetTime(), and InitElecSignalStat().
int* ElecSignalStat::BitString [private] |
int ElecSignalStat::BitStringShift [private] |
Referenced by GetBitStringShift(), and UpdatePerformanceStatistics().
double ElecSignalStat::ClockRecoveryTime [private] |
Referenced by ClearElecSignalStat(), ComputePerformanceStatistics(), and GetClockRecoveryTime().
double ElecSignalStat::ClockRecoveryTimeBeforeTimeShift [private] |
Referenced by ComputePerformanceStatistics(), and GetClockRecoveryTimeBeforeTimeShift().
bool ElecSignalStat::ComputePatternStatsFlag [private] |
Flag is 1 if user wants to compute stats for patterns. Initialized from input parameter file by constructor
Referenced by ClearElecSignalStat(), ElecSignalStat(), InitElecSignalStat(), UpdateMoments(), and ~ElecSignalStat().
double* ElecSignalStat::CurrentVector [private] |
double ElecSignalStat::DeltaCurrent [private] |
Referenced by ElecSignalStat().
double ElecSignalStat::DeltaFreq [private] |
double ElecSignalStat::DeltaTime [private] |
bool ElecSignalStat::DoGaussianPDFsMonteCarloFlag [private] |
cfftw* ElecSignalStat::fft [private] |
Referenced by InitElecSignalStat().
int ElecSignalStat::FirstTargetIndexTime [private] |
Referenced by WriteFileEyeDiagram().
double** ElecSignalStat::GaussianPDFTimeSlices [private] |
Referenced by ComputeAveragePDFs(), ElecSignalStat(), WriteFilePDFTimeSlicesAndAveragePDFs(), and ~ElecSignalStat().
double* ElecSignalStat::GaussianPDFTimeSlicesStorageVec [private] |
Referenced by ElecSignalStat(), and ~ElecSignalStat().
double ElecSignalStat::GaussianSmoothingFWHM [private] |
Referenced by ElecSignalStat(), and InitElecSignalStat().
bool ElecSignalStat::InitializedGaussianStatisticsFlag [private] |
double ElecSignalStat::InputClockRecoveryTime [private] |
Referenced by ElecSignalStat(), GetTargetIndexTime(), and GetTargetTime().
double ElecSignalStat::IsolatedBit0_PowerMax [private] |
Referenced by ClearElecSignalStat(), GetIsolatedBit0_PowerMax(), and UpdateMoments().
double ElecSignalStat::IsolatedBit0_PowerSquareSum [private] |
Referenced by ClearElecSignalStat(), GetIsolatedBit0_PowerStdDev(), and UpdateMoments().
double ElecSignalStat::IsolatedBit0_PowerSum [private] |
Referenced by ClearElecSignalStat(), GetIsolatedBit0_PowerMean(), and UpdateMoments().
double ElecSignalStat::IsolatedBit1_PowerMin [private] |
Referenced by ClearElecSignalStat(), GetIsolatedBit1_PowerMin(), and UpdateMoments().
double ElecSignalStat::IsolatedBit1_PowerSquareSum [private] |
Referenced by ClearElecSignalStat(), GetIsolatedBit1_PowerStdDev(), and UpdateMoments().
double ElecSignalStat::IsolatedBit1_PowerSum [private] |
Referenced by ClearElecSignalStat(), GetIsolatedBit1_PowerMean(), and UpdateMoments().
double ElecSignalStat::MaxCurrent [private] |
Referenced by ElecSignalStat().
double* ElecSignalStat::MaximumVoltagePattern [private] |
Array to store the maximum voltage for each pattern.
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), ReleaseMemoryForPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().
double* ElecSignalStat::MeanCurrentMonteCarlo [private] |
Referenced by ComputeAndOutputMomentsFromMonteCarlo(), ComputeAveragePDFs(), ElecSignalStat(), and ~ElecSignalStat().
double* ElecSignalStat::MeanPattern [private] |
Array of the means of the patterns, indexed by the PaternIndicies. The mean of a pattern is the mean of the voltage in the center bit of the given pattern
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), and WriteFilePatternStats().
double ElecSignalStat::MeanPower [private] |
Referenced by GetMeanPower().
double ElecSignalStat::MinCurrent [private] |
Referenced by ElecSignalStat().
double* ElecSignalStat::MinimumVoltagePattern [private] |
Array to store the minimum voltage for each pattern.
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), ReleaseMemoryForPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().
double ElecSignalStat::NoiseSpectralDensityX_PD [private] |
double ElecSignalStat::NoiseSpectralDensityY_PD [private] |
int ElecSignalStat::NumCallsToUpdateClock [private] |
Referenced by ClearElecSignalStat(), GetClockTimeForMonteCarloEye(), and UpdateClock().
int* ElecSignalStat::NumOccurencesPattern [private] |
Stores the total number of occurneces of each pattern.
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().
int ElecSignalStat::NumPatterns [private] |
The number of patterns which is pow(2,PatternLength).
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), EnumeratePatterns(), InitPatternStats(), PreparePatternStatsForOutput(), and WriteFilePatternStats().
int ElecSignalStat::NumPointsCurrent [private] |
int ElecSignalStat::NumTimeSlices [private] |
int ElecSignalStat::ObjectInitialized [private] |
ElecFilter* ElecSignalStat::oElecFilter2 [private] |
Referenced by GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), ResetOptElecFilterBandwidthsForGaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), and ~ElecSignalStat().
ElecFilter* ElecSignalStat::oElecFilter4 [private] |
Referenced by GetQ_FactorGaussianStatisticsFromBER(), and SetOptElecFiltersForGaussianStatistics().
ElecSignalStat* ElecSignalStat::oElecSignalStat2 [private] |
Referenced by GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevSignal_ASE_BitSlot(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), and ~ElecSignalStat().
ElecSignalStat* ElecSignalStat::oElecSignalStat4 [private] |
OptFilter* ElecSignalStat::oOptFilter2 [private] |
Referenced by GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), ResetOptElecFilterBandwidthsForGaussianStatistics(), ResetOptElecFiltersForGaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), and ~ElecSignalStat().
OptFilter* ElecSignalStat::oOptFilter4 [private] |
Referenced by GetQ_FactorGaussianStatisticsFromBER(), and SetOptElecFiltersForGaussianStatistics().
Referenced by ComputeAveragePDFs(), ElecSignalStat(), GetBER_GaussianStatisticsFromDecisionThreshold(), GetBit(), GetBitFromString(), GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanCurrentIsolatedBit0(), GetMeanCurrentIsolatedBit1(), GetNoiseNoiseVarianceGaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), GetTargetIndexTimeBestMinEyeOpening(), GetTargetIndexTimeBestQ_Factor(), InitElecSignalStat(), ResetOptElecFiltersForGaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), SetTimeSlices(), UpdateEqualizedPerformanceStatistics(), UpdateMoments(), UpdatePatternStats(), and UpdatePerformanceStatistics().
OptSignal* ElecSignalStat::oOptSignal1 [private] |
OptSignal* ElecSignalStat::oOptSignal2 [private] |
Referenced by GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), ResetOptElecFiltersForGaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), and ~ElecSignalStat().
OptSignal* ElecSignalStat::oOptSignal3 [private] |
Referenced by GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_TimeIndex(), ResetOptElecFiltersForGaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), and ~ElecSignalStat().
OptSignal* ElecSignalStat::oOptSignal4 [private] |
OptSignal* ElecSignalStat::oOptSignalX [private] |
OptFilter* ElecSignalStat::oOrigOptFilter [private] |
Referenced by ResetOptElecFiltersForGaussianStatistics(), and SetOptElecFiltersForGaussianStatistics().
Photodetector* ElecSignalStat::oPhotodetector2 [private] |
Referenced by GetCurrentExtinctionRatio_GaussianStatistics(), GetEnhancementFactor(), GetESNR_GaussianStatistics(), GetESNR_Mark_GaussianStatistics(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetNoiseNoiseVarianceGaussianStatistics(), GetNormalizedEnhancementFactor(), GetNormKcoeff0_GaussianStatistics(), GetNormKcoeff1_GaussianStatistics(), GetNormNumberNoiseModes_GaussianStatistics(), GetQ_FactorFromESNR_GaussianStatistics(), GetQ_FactorGaussianStatisticsFirstPattern(), GetQ_FactorGaussianStatisticsFromBER(), GetQ_FactorGaussianStatisticsWorstPattern(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetStdDevWorstBit0_GaussianStatistics(), GetStdDevWorstBit1_GaussianStatistics(), ResetOptElecFiltersForGaussianStatistics(), SetOptElecFiltersForGaussianStatistics(), and ~ElecSignalStat().
Photodetector* ElecSignalStat::oPhotodetector4 [private] |
Referenced by GetQ_FactorGaussianStatisticsFromBER(), and SetOptElecFiltersForGaussianStatistics().
bool* ElecSignalStat::PatternArray [private] |
A bool array to store a pattern.
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), EnumeratePatterns(), ReleaseMemoryForPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().
int ElecSignalStat::PatternLength [private] |
Lenth of the patterns for which stats are to be computed. Must be odd Initialized from input parameter file by constructor
Referenced by AllocateMemoryForPatternStats(), ElecSignalStat(), EnumeratePatterns(), GetCenterBitPattern(), GetPattern(), InitPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().
double* ElecSignalStat::PowerSquareSumBit [private] |
Referenced by ClearGaussianPDFsMonteCarlo(), ElecSignalStat(), GetPowerStdDevBit(), UpdateMoments(), and ~ElecSignalStat().
double* ElecSignalStat::PowerSumBit [private] |
Referenced by ClearGaussianPDFsMonteCarlo(), ElecSignalStat(), GetPowerMeanBit(), UpdateMoments(), and ~ElecSignalStat().
double ElecSignalStat::Q_Factor [private] |
Referenced by GetQ_FactorGaussianStatisticsFromBER().
double ElecSignalStat::Q_FactorPre [private] |
Referenced by GetQ_FactorGaussianStatisticsFromBER(), and InitElecSignalStat().
int* ElecSignalStat::qtBit [private] |
Referenced by ClearGaussianPDFsMonteCarlo(), ElecSignalStat(), GetPowerMeanBit(), GetPowerStdDevBit(), UpdateMoments(), and ~ElecSignalStat().
int ElecSignalStat::qtBit0 [private] |
int ElecSignalStat::qtBit1 [private] |
int ElecSignalStat::qtIsolatedBit0 [private] |
int ElecSignalStat::qtIsolatedBit1 [private] |
int ElecSignalStat::qtPoints [private] |
Referenced by GetClockTimeForMonteCarloEye(), GetIntegralForNoiseNoiseVarianceGaussianStatistics(), GetIntegralForSignalNoiseVariance(), GetMeanASE_ASE(), GetMeanNoiseGaussianStatistics(), GetQtPoints(), GetStdDevASE_ASE(), GetStdDevSignal_ASE_BitSlot(), GetStdDevSignal_ASE_TimeIndex(), GetTargetIndexTime(), GetTargetIndexTimeBestMinEyeOpening(), GetTargetIndexTimeBestQ_Factor(), InitElecSignalStat(), UpdatePerformanceStatistics(), WriteFileEyeDiagram(), and WriteFileEyeDiagramFixedCLK().
int ElecSignalStat::qtPointsLast [private] |
int ElecSignalStat::qtRunsEyeDiagram [private] |
Referenced by ClearElecSignalStat(), and WriteFileEyeDiagram().
int ElecSignalStat::qtRunsEyeDiagramFixedCLK [private] |
Referenced by ClearElecSignalStat(), and WriteFileEyeDiagramFixedCLK().
fftPowerMatrices ElecSignalStat::sfftPM [private] |
double* ElecSignalStat::StdDevCurrentMonteCarlo [private] |
Referenced by ComputeAndOutputMomentsFromMonteCarlo(), ComputeAveragePDFs(), ElecSignalStat(), and ~ElecSignalStat().
double* ElecSignalStat::StdDevPattern [private] |
Array of the standard devaitions of the patterns, indexed by the PaternIndicies. The std dev of a pattern is the std dev of the voltage in the center bit of the given pattern
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), and WriteFilePatternStats().
int ElecSignalStat::StringLength [private] |
Referenced by ClearGaussianPDFsMonteCarlo(), ElecSignalStat(), GetBER_GaussianStatisticsFromDecisionThreshold(), GetClockTimeForMonteCarloEye(), GetCurrentFirstBit0(), GetCurrentFirstBit1(), GetMaxCurrentBit0(), GetMeanCurrentIsolatedBit0(), GetMeanCurrentIsolatedBit1(), GetMinCurrentBit1(), GetStdDevSignal_ASE_BitSlot(), GetStringLength(), GetTargetIndexTime(), GetTargetIndexTimeBestMinEyeOpening(), GetTargetIndexTimeBestQ_Factor(), InitElecSignalStat(), SetOptElecFiltersForGaussianStatistics(), UpdateEqualizedPerformanceStatistics(), UpdateMoments(), UpdatePatternStats(), UpdatePerformanceStatistics(), WriteFileEyeDiagram(), and WriteFileEyeDiagramFixedCLK().
int ElecSignalStat::SumRelTargetIndexTime [private] |
Referenced by WriteFileEyeDiagram().
double ElecSignalStat::SumTargetIndexTimesForUpdateClock [private] |
Referenced by GetClockTimeForMonteCarloEye(), and UpdateClock().
int ElecSignalStat::TargetFreqIndex [private] |
Referenced by ComputePhaseTargetFreq(), and ComputeTargetFreqIndex().
int* ElecSignalStat::TimeSliceIndices [private] |
Referenced by ElecSignalStat(), SetTimeSlices(), and ~ElecSignalStat().
double* ElecSignalStat::TimeSlices [private] |
Referenced by ComputeAndOutputMomentsFromMonteCarlo(), ElecSignalStat(), SetTimeSlices(), and ~ElecSignalStat().
double ElecSignalStat::TimeWindow [private] |
Referenced by ComputeTargetFreqIndex(), and InitElecSignalStat().
typePulse ElecSignalStat::TypePulse [private] |
Referenced by ComputeTargetFreqIndex(), and InitElecSignalStat().
bool ElecSignalStat::UseAbsCurrentFlag [private] |
int ElecSignalStat::UseSmoothingToRecoverClockFlag [private] |
Referenced by ElecSignalStat(), and InitElecSignalStat().
double* ElecSignalStat::VariancesCurrentSignalNoiseBeating [private] |
Referenced by SetOptElecFiltersForGaussianStatistics().
double* ElecSignalStat::VoltageSumPattern [private] |
Array to store the sums of the voltages for each pattern.
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), and UpdatePatternStats().
double* ElecSignalStat::VoltageSumSquaresPattern [private] |
Array to store the sum of the squares of the voltages for each pattern.
Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), and UpdatePatternStats().