Public Member Functions | Public Attributes | Private Member Functions | Private Attributes

ElecSignalStat Class Reference

#include <ocsElecSignalStat.hh>

List of all members.

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)
cplxGetSignalTimeDomain (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

OptSignaloOptSignal
PhotodetectoroPhotodetector
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
cfftwfft
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
OptSignaloOptSignal1
OptSignaloOptSignal2
OptSignaloOptSignal3
OptSignaloOptSignalX
OptFilteroOrigOptFilter
OptFilteroOptFilter2
PhotodetectoroPhotodetector2
ElecFilteroElecFilter2
ElecSignalStatoElecSignalStat2
OptSignaloOptSignal4
OptFilteroOptFilter4
PhotodetectoroPhotodetector4
ElecFilteroElecFilter4
ElecSignalStatoElecSignalStat4
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.

Detailed Description

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


Constructor & Destructor Documentation

ElecSignalStat::ElecSignalStat ( OptSignal oOptSignal2,
Photodetector oPhotodetector2 
)

Constructor without input file.

References InitElecSignalStat().

Referenced by SetOptElecFiltersForGaussianStatistics().

ElecSignalStat::ElecSignalStat ( string  InFileName,
OptSignal oOptSignal2,
Photodetector oPhotodetector2 
)
ElecSignalStat::~ElecSignalStat ( void   ) 

Member Function Documentation

void ElecSignalStat::AllocateMemoryForPatternStats ( void   ) 
double ElecSignalStat::brentHu ( double  ax,
double  bx,
double  cx,
double(*)(double)  f,
double  tol,
double *  xmin 
)

References CGOLD, nrerror(), SHFT, and SIGN.

void ElecSignalStat::CheckGaussianStatisticsInitialization ( string  CallingMethod  ) 
void ElecSignalStat::ClearElecSignalStat ( void   ) 
void ElecSignalStat::ClearGaussianPDFsMonteCarlo ( void   ) 
void ElecSignalStat::ClearPatternStats ( void   ) 
void ElecSignalStat::ComputeAndOutputMomentsFromMonteCarlo ( string  FileID  ) 
void ElecSignalStat::ComputeAveragePDFs ( void   ) 
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  ) 
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]
void ElecSignalStat::ComputeTargetFreqIndex ( void   )  [private]
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   ) 
double ElecSignalStat::GetBER_GaussianStatisticsFromDecisionThreshold ( double  DecisionCurrent  ) 
int ElecSignalStat::GetBit ( int  BitSlot  )  [inline]
double ElecSignalStat::GetBit0_PowerMax ( void   )  [inline]
double ElecSignalStat::GetBit0_PowerMean ( void   )  [inline]
double ElecSignalStat::GetBit0_PowerStdDev ( void   )  [inline]
double ElecSignalStat::GetBit1_PowerMean ( void   )  [inline]
double ElecSignalStat::GetBit1_PowerMin ( void   )  [inline]
double ElecSignalStat::GetBit1_PowerStdDev ( void   )  [inline]
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]

Returns the bit error rate computed from an input Q-factor By Ivan Lima

References pi, sq(), and sqrt().

int ElecSignalStat::GetBitFromString ( int  ii  )  [inline]
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]
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  ) 
double ElecSignalStat::GetCurrentBitFromRecoveredSignal ( int  BitSlotCurrentBit  ) 

References BitIntensity.

double ElecSignalStat::GetCurrentExtinctionRatio_GaussianStatistics ( void   ) 
double ElecSignalStat::GetCurrentFirstBit0 ( int *  BitSlotCurrentFirstBit0  ) 
double ElecSignalStat::GetCurrentFirstBit1 ( int *  BitSlotCurrentFirstBit1  ) 
double ElecSignalStat::GetDeltaTime ( void   )  [inline]

References DeltaTime.

Referenced by ElecEqualizer::WriteFileEyeDiagram().

double ElecSignalStat::GetElecTimeDomainSNR ( void   )  [inline]
double ElecSignalStat::GetElecTimeDomainSNR_IsolatedBits ( void   )  [inline]
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  ) 
double ElecSignalStat::GetESNR_Mark_GaussianStatistics ( double  NoiseSpectralDensity  ) 
double ElecSignalStat::GetIntegralForNoiseNoiseVarianceGaussianStatistics ( void   ) 
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]
double ElecSignalStat::GetIsolatedBit0_PowerStdDev ( void   )  [inline]
double ElecSignalStat::GetIsolatedBit1_PowerMean ( void   )  [inline]
double ElecSignalStat::GetIsolatedBit1_PowerMin ( void   )  [inline]

References IsolatedBit1_PowerMin.

double ElecSignalStat::GetIsolatedBit1_PowerStdDev ( void   )  [inline]
double ElecSignalStat::GetMaxCurrentBit0 ( int *  BitSlotMaxCurrentBit0  ) 
double ElecSignalStat::GetMaxCurrentBit0 ( void   ) 
double ElecSignalStat::GetMeanASE_ASE ( double  NoiseSpectralDensity  ) 
double ElecSignalStat::GetMeanASE_ASE ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetMeanCurrentIsolatedBit0 ( void   ) 
double ElecSignalStat::GetMeanCurrentIsolatedBit1 ( void   ) 
double ElecSignalStat::GetMeanNoiseGaussianStatistics ( double  TotalNoiseSpectralDensity  ) 
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   ) 
double ElecSignalStat::GetMinCurrentBit1 ( int *  BitSlotMinCurrentBit1  ) 
double ElecSignalStat::GetNoiseNoiseVarianceGaussianStatistics ( double  TotalNoiseSpectralDensity,
double  DOP_Noise 
)
double ElecSignalStat::GetNormalizedEnhancementFactor ( void   ) 
double ElecSignalStat::GetNormKcoeff0_GaussianStatistics ( void   ) 
double ElecSignalStat::GetNormKcoeff1_GaussianStatistics ( void   ) 
double ElecSignalStat::GetNormNumberNoiseModes_GaussianStatistics ( void   ) 
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   ) 
double ElecSignalStat::GetQ_FactorFromESNR_GaussianStatistics ( double  ESNR  ) 
double ElecSignalStat::GetQ_FactorFromESNR_GaussianStatistics ( double  ESNR,
double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetQ_FactorFromIsolatedBits ( void   ) 
double ElecSignalStat::GetQ_FactorGaussianStatisticsFirstPattern ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetQ_FactorGaussianStatisticsFromBER ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetQ_FactorGaussianStatisticsFromBER ( double  NoiseSpectralDensity  ) 

Added by Jonathan.

double ElecSignalStat::GetQ_FactorGaussianStatisticsWorstPattern ( double  NoiseSpectralDensity  ) 
double ElecSignalStat::GetQ_FactorGaussianStatisticsWorstPattern ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetQtBit0 ( void   )  [inline]
double ElecSignalStat::GetQtBit1 ( void   )  [inline]
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]
double ElecSignalStat::GetStdDevASE_ASE ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetStdDevASE_ASE ( double  NoiseSpectralDensity  ) 
double ElecSignalStat::GetStdDevSignal_ASE_BitSlot ( int  BitSlot,
double  NoiseSpectralDensity 
)
double ElecSignalStat::GetStdDevSignal_ASE_BitSlot ( int  BitSlot,
double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetStdDevSignal_ASE_TimeIndex ( int  TargetIndexTime2,
double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetStdDevWorstBit0_GaussianStatistics ( double  NoiseSpectralDensity  ) 
double ElecSignalStat::GetStdDevWorstBit0_GaussianStatistics ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
double ElecSignalStat::GetStdDevWorstBit1_GaussianStatistics ( double  NoiseSpectralDensity  ) 
double ElecSignalStat::GetStdDevWorstBit1_GaussianStatistics ( double  NoiseSpectralDensityX,
double  NoiseSpectralDensityY 
)
int ElecSignalStat::GetStringLength ( void   )  [inline]
int ElecSignalStat::GetTargetIndexTime ( void   )  [private]
int ElecSignalStat::GetTargetIndexTimeBestMinEyeOpening ( void   )  [private]
int ElecSignalStat::GetTargetIndexTimeBestQ_Factor ( void   )  [private]
double ElecSignalStat::GetTargetTime ( void   )  [private]
void ElecSignalStat::InitElecSignalStat ( OptSignal oOptSignal2,
Photodetector oPhotodetector2 
) [private]
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  ) 
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   ) 
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]
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]
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

  • NumOccurencesPattern
  • VoltageSumPattern
  • VoltageSumSquaresPattern
  • MaximumVoltagePattern
  • MinimumVoltagePattern

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  ) 
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 
)
void ElecSignalStat::WriteFilePatternStats ( string  OutFileName  ) 
void ElecSignalStat::WriteFilePDFTimeSlicesAndAveragePDFs ( string  FileID  ) 
string ElecSignalStat::WriteTypeClockRecovery ( void   ) 

Member Data Documentation

double ElecSignalStat::BitErrorRate [private]
double ElecSignalStat::BitLength [private]

Referenced by GetBitLength(), and InitElecSignalStat().

double ElecSignalStat::BitRateChann [private]
int* ElecSignalStat::BitString [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]

Referenced by InitElecSignalStat().

Referenced by WriteFileEyeDiagram().

Referenced by ElecSignalStat(), and ~ElecSignalStat().

double ElecSignalStat::MaxCurrent [private]

Referenced by ElecSignalStat().

Array to store the maximum voltage for each pattern.

Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), ReleaseMemoryForPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().

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().

Array to store the minimum voltage for each pattern.

Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), ReleaseMemoryForPatternStats(), UpdatePatternStats(), and WriteFilePatternStats().

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::PowerSumBit [private]
double ElecSignalStat::Q_Factor [private]
double ElecSignalStat::Q_FactorPre [private]
int* ElecSignalStat::qtBit [private]
int ElecSignalStat::qtBit0 [private]
int ElecSignalStat::qtBit1 [private]
int ElecSignalStat::qtPoints [private]
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().

Referenced by WriteFileEyeDiagram().

double* ElecSignalStat::TimeSlices [private]
double ElecSignalStat::TimeWindow [private]

Array to store the sums of the voltages for each pattern.

Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), and UpdatePatternStats().

Array to store the sum of the squares of the voltages for each pattern.

Referenced by AllocateMemoryForPatternStats(), ClearPatternStats(), PreparePatternStatsForOutput(), ReleaseMemoryForPatternStats(), and UpdatePatternStats().


The documentation for this class was generated from the following files: