#include <ocsReceiverSemiAnalytical.hh>
Public Member Functions | |
ReceiverSemiAnalytical () | |
ReceiverSemiAnalytical (typeReceiver TypeReceiver2, OptSignal *WDMSignal, RanNumGen *RNG2, int DemuxChannArrayIndex2, string InDir, string Job2) | |
void | ReceiverSemiAnalyticalInit (OptSignal *WDMSignal, RanNumGen *RNG2, string InDir, string Job2, int DemuxChannArrayIndex2, fftPowerMatrices &sfftPM2, fftPowerMatrices &WorksfftPM2, OptSignal *GlobalSCSignal, OptDemuxer *Demuxer2) |
Use this Init method if you have many receivers and want to save memory. | |
void | SetReceiverMapNumber (int Value) |
void | SetJobName (string Name) |
void | SetDemuxChannArrayIndex (int Value) |
string | WriteTypeReceiver (void) |
~ReceiverSemiAnalytical () | |
void | ReceiveSignalBackToBack (void) |
void | ReceiveSignalBackToBackMonteCarlo (void) |
void | ReceiveSignal (int MapNum) |
Calls ReceiveSignal(MapNum,0). | |
void | ReceiveSignal (int MapNum, int MonteCarloSystemRealizationNum) |
Calls either ReceiveSignalMonteCarlo or ReceiveSignalSemiAnalytical. | |
void | ReceiveSignalMonteCarlo (int MapNum, int MonteCarloSystemRealizationNum) |
void | ReceiveSignalSemiAnalytical (string FileID) |
void | PostProcessReceiverStats (int MapNum, int MonteCarloSystemRealizationNum, double PropagatedLength, int AppendFlag) |
void | WriteStats (int MapNum, int MonteCarloSystemRealizationNum, double PropagatedLength, int AppendFlag) |
void | WriteNoiseFreeOpticalSignalFreq (string OutFileName) |
void | GetLimaParameters (bool AppendOutFileFlag, double FreqFWHM_OptFilter, double FreqFWHM_ElecFilter, double OSA_Bandwidth) |
Public Attributes | |
OptSignal * | WDMSignal |
OptSignal * | SingleChannelSignal |
OptFilter * | TunableOptFilter |
OptDemuxer * | oOptDemuxer |
Photodetector * | oPhotodetector |
ElecFilter * | oElecFilter |
ElecSignalStat * | oElecSignalStat |
Histogram2D * | EyeDiagramMonteCarlo |
Private Attributes | |
typeReceiver | TypeReceiver |
int | DemuxChannArrayIndex |
string | Job |
int | RecMapNum |
int | ObjectInitialized |
double * | StdDev_Signal_ASE |
ReceiverSemiAnalytical::ReceiverSemiAnalytical | ( | void | ) |
Use this constructor followed by calls to ReceiverSubsystemInit if you are defining an array of ReceiverSubsystems
References ObjectInitialized.
ReceiverSemiAnalytical::ReceiverSemiAnalytical | ( | typeReceiver | TypeReceiver2, | |
OptSignal * | WDMSignal, | |||
RanNumGen * | RNG2, | |||
int | DemuxChannArrayIndex2, | |||
string | InDir, | |||
string | Job2 | |||
) |
References DemuxChannArrayIndex, EyeDiagramMonteCarlo, OptSignal::GetQtPoints(), Job, LogFile, LogFileSeparator(), MONTE_CARLO, NewDouble(), ObjectInitialized, oElecFilter, oElecSignalStat, oOptDemuxer, oPhotodetector, OptDemuxer::PrepareToDemuxChannel(), SEMI_ANALYTICAL, ElecSignalStat::SetOptElecFiltersForGaussianStatistics(), SingleChannelSignal, StdDev_Signal_ASE, TunableOptFilter, TypeReceiver, WDMSignal, and WriteTypeReceiver().
ReceiverSemiAnalytical::~ReceiverSemiAnalytical | ( | ) |
void ReceiverSemiAnalytical::GetLimaParameters | ( | bool | AppendOutFileFlag, | |
double | FreqFWHM_OptFilter, | |||
double | FreqFWHM_ElecFilter, | |||
double | OSA_Bandwidth | |||
) |
References DemuxChannArrayIndex, ElecSignalStat::GetEnhancementFactor(), ElecSignalStat::GetNormalizedEnhancementFactor(), ElecSignalStat::GetNormKcoeff0_GaussianStatistics(), ElecSignalStat::GetNormKcoeff1_GaussianStatistics(), ElecSignalStat::GetNormNumberNoiseModes_GaussianStatistics(), Job, Linear2dB(), oElecSignalStat, oOptDemuxer, OptDemuxer::PrepareToDemuxChannel(), ElecSignalStat::ResetOptElecFilterBandwidthsForGaussianStatistics(), and ElecSignalStat::ResetOptElecFiltersForGaussianStatistics().
void ReceiverSemiAnalytical::PostProcessReceiverStats | ( | int | MapNum, | |
int | MonteCarloSystemRealizationNum, | |||
double | PropagatedLength, | |||
int | AppendFlag | |||
) |
References DemuxChannArrayIndex, EyeDiagramMonteCarlo, Job, Histogram2D::WriteEyeDiagramHistogram(), and WriteStats().
void ReceiverSemiAnalytical::ReceiverSemiAnalyticalInit | ( | OptSignal * | WDMSignal, | |
RanNumGen * | RNG2, | |||
string | InDir, | |||
string | Job2, | |||
int | DemuxChannArrayIndex2, | |||
fftPowerMatrices & | sfftPM2, | |||
fftPowerMatrices & | WorksfftPM2, | |||
OptSignal * | GlobalSCSignal, | |||
OptDemuxer * | Demuxer2 | |||
) |
Use this Init method if you have many receivers and want to save memory.
void ReceiverSemiAnalytical::ReceiveSignal | ( | int | MapNum | ) |
Calls ReceiveSignal(MapNum,0).
void ReceiverSemiAnalytical::ReceiveSignal | ( | int | MapNum, | |
int | MonteCarloSystemRealizationNum | |||
) |
Calls either ReceiveSignalMonteCarlo or ReceiveSignalSemiAnalytical.
References DemuxChannArrayIndex, MONTE_CARLO, ReceiveSignalMonteCarlo(), ReceiveSignalSemiAnalytical(), SEMI_ANALYTICAL, and TypeReceiver.
void ReceiverSemiAnalytical::ReceiveSignalBackToBack | ( | void | ) |
Calls either ReceiveSignalBackToBackMonteCarlo or ReceiveSignalSemiAnalytical
References MONTE_CARLO, ReceiveSignalBackToBackMonteCarlo(), ReceiveSignalSemiAnalytical(), SEMI_ANALYTICAL, and TypeReceiver.
void ReceiverSemiAnalytical::ReceiveSignalBackToBackMonteCarlo | ( | void | ) |
References Histogram2D::Clear(), ElecSignalStat::ClearElecSignalStat(), ElecSignalStat::ComputePerformanceStatistics(), DemuxChannArrayIndex, OptDemuxer::DemuxChannel(), Photodetector::DetectOptSignal(), EyeDiagramMonteCarlo, ElecFilter::FilterElecSignal(), ElecSignalStat::GetAmplitudeMargin(), ElecSignalStat::GetBit0_PowerMean(), ElecSignalStat::GetBit0_PowerStdDev(), ElecSignalStat::GetBit1_PowerMean(), ElecSignalStat::GetBit1_PowerStdDev(), ElecSignalStat::GetMeanPower(), ElecSignalStat::GetQ_Factor(), ElecSignalStat::GetQtBit0(), ElecSignalStat::GetQtBit1(), Job, Linear2dB(), LogFileSeparator(), oElecFilter, oElecSignalStat, oOptDemuxer, oPhotodetector, SingleChannelSignal, Histogram2D::UpdateEyeDiagram(), Histogram2D::WriteEyeDiagramHistogram(), and ElecSignalStat::WriteFileEyeDiagram().
Referenced by ReceiveSignalBackToBack().
void ReceiverSemiAnalytical::ReceiveSignalMonteCarlo | ( | int | MapNum, | |
int | MonteCarloSystemRealizationNum | |||
) |
References DemuxChannArrayIndex, OptDemuxer::DemuxChannel(), Photodetector::DetectOptSignal(), EyeDiagramMonteCarlo, ElecFilter::FilterElecSignal(), oElecFilter, oElecSignalStat, oOptDemuxer, oPhotodetector, SingleChannelSignal, Histogram2D::UpdateEyeDiagram(), and ElecSignalStat::UpdatePerformanceStatistics().
Referenced by ReceiveSignal().
void ReceiverSemiAnalytical::ReceiveSignalSemiAnalytical | ( | string | FileID | ) |
References ElecSignalStat::ComputePerformanceStatistics(), DemuxChannArrayIndex, OptDemuxer::DemuxChannel(), Photodetector::DetectOptSignal(), ElecFilter::FilterElecSignal(), OptSignal::GetAccumulatedTotalNoiseSpectralDensityGaussianStatistics(), ElecSignalStat::GetClockCurrent(), ElecSignalStat::GetClockRecoveryTime(), OptSignal::GetDeltaTime(), ElecSignalStat::GetMeanASE_ASE(), OptSignal::GetQtPoints(), ElecSignalStat::GetStdDevASE_ASE(), ElecSignalStat::GetStdDevSignal_ASE_TimeIndex(), OptSignal::GetTypeSimulation(), Job, oElecFilter, oElecSignalStat, oOptDemuxer, oPhotodetector, OptDemuxer::PrepareToDemuxChannel(), ElecSignalStat::ResetOptElecFiltersForGaussianStatistics(), Photodetector::sfftPM, SingleChannelSignal, sq(), sqrt(), StdDev_Signal_ASE, and fftPowerMatrices::tPowerSignal.
Referenced by ReceiveSignal(), and ReceiveSignalBackToBack().
void ReceiverSemiAnalytical::SetDemuxChannArrayIndex | ( | int | Value | ) | [inline] |
References DemuxChannArrayIndex.
void ReceiverSemiAnalytical::SetJobName | ( | string | Name | ) | [inline] |
References Job.
void ReceiverSemiAnalytical::SetReceiverMapNumber | ( | int | Value | ) | [inline] |
References RecMapNum.
void ReceiverSemiAnalytical::WriteNoiseFreeOpticalSignalFreq | ( | string | OutFileName | ) |
Writes the noise free optical signal in frequency before optical filtering to a file. Useful as input to a SCALAR Chi-square receiver model. Not implemented for VECTOR simulations yet. JZ 12/11/03
References fftMatrices::fOptSignalX, OptSignal::GetDeltaFreq(), OptSignal::GetQtPoints(), OptSignal::GetTypeSimulation(), OptSignal::sfftM, sq(), and WDMSignal.
void ReceiverSemiAnalytical::WriteStats | ( | int | MapNum, | |
int | MonteCarloSystemRealizationNum, | |||
double | PropagatedLength, | |||
int | AppendFlag | |||
) |
References DemuxChannArrayIndex, ElecSignalStat::GetAmplitudeMargin(), ElecSignalStat::GetBit0_PowerMean(), ElecSignalStat::GetBit0_PowerStdDev(), ElecSignalStat::GetBit1_PowerMean(), ElecSignalStat::GetBit1_PowerStdDev(), ElecSignalStat::GetBitErrorRate(), ElecSignalStat::GetClockCurrent(), ElecSignalStat::GetClockTimeForMonteCarloEye(), ElecSignalStat::GetMeanPower(), ElecSignalStat::GetQ_Factor(), ElecSignalStat::GetQtBit0(), ElecSignalStat::GetQtBit1(), Job, Linear2dB(), and oElecSignalStat.
Referenced by PostProcessReceiverStats().
string ReceiverSemiAnalytical::WriteTypeReceiver | ( | void | ) |
References MONTE_CARLO, SEMI_ANALYTICAL, and TypeReceiver.
Referenced by ReceiverSemiAnalytical().
int ReceiverSemiAnalytical::DemuxChannArrayIndex [private] |
string ReceiverSemiAnalytical::Job [private] |
int ReceiverSemiAnalytical::ObjectInitialized [private] |
Referenced by ReceiverSemiAnalytical(), and ~ReceiverSemiAnalytical().
int ReceiverSemiAnalytical::RecMapNum [private] |
Referenced by SetReceiverMapNumber().
double* ReceiverSemiAnalytical::StdDev_Signal_ASE [private] |
Referenced by ReceiverSemiAnalytical(), and ReceiveSignalSemiAnalytical().
Referenced by ReceiverSemiAnalytical(), and ~ReceiverSemiAnalytical().
Referenced by ReceiverSemiAnalytical(), ReceiveSignal(), ReceiveSignalBackToBack(), and WriteTypeReceiver().
Referenced by ReceiverSemiAnalytical(), and WriteNoiseFreeOpticalSignalFreq().