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

OptSignal Class Reference

The OptSignal class contains data and methods for the optical signal. More...

#include <ocsOptSignal.hh>

List of all members.

Public Member Functions

 OptSignal (string InFileName, RanNumGen *RNG2)
 The main constructor for the class.
 OptSignal (string InFileName, RanNumGen *RNG2, string DataFileName)
 A second constructor for the class.
void ConstructOptSignal (string InFileName, RanNumGen *RNG2)
 OptSignal (OptSignal &OrigOptSignal)
 Copy constructor.
OptSignaloperator= (OptSignal &RHS_Signal)
 Assignment operator.
OptSignaloperator- (OptSignal &Signal2)
 Takes difference of two signals.
void SubtractFreqDomain (OptSignal *oOptSignal2)
void AddFreqDomain (OptSignal *oOptSignal2)
 OptSignal (OptSignal &Signal1, OptSignal &Signal2, RanNumGen *RNG3)
 Constructor for sum of signals.
void AddReducedNoiseToNoiseFreeSignal (ReduOptSignal *ReduOptSignal1)
 ~OptSignal ()
 Class destructor.
void RegenerateSignalString (void)
 Basic transmitter model. Regenerates the signal data.
void GetNewRandomSignalString (void)
 Regenerates the signal using a new randomly chosen bit sequence.
void ConstantPhaseShift (double PhaseShiftAmount)
void GenerateImpulseSignal (void)
void ChangeAveragePowerChannCurrentSignal (double AveragePowerChann2)
 Used in GaussianReceiver for computing the Q-factor.
void RegenerateSignalWithGivenAveragePowerChann (double AveragePowerChann2)
 Used in GaussianReceiver for computing the Q-factor.
void GenerateSignalStringGaussianOrSechWithPhaseShift (double PhaseShiftAmount)
 Written for a particular application.
void GenerateSignalStringRaisedCosinesWithPhaseShift (double PhaseShiftAmount)
 Written for a particular application.
void InputTimeDataFromFile (void)
 Reads in time data from file when TypePulse == INPUT_SIGNAL_FROM_FILE.
void InitializeFirstOrderPMDSignal (double PowerSplit, double DGD)
void ChangeAbsoluteCenterFreq (double CenterFreq2)
double GetRelativeCenterFrequency (int ChannelArrayIndex)
double GetAccumulatedFirstOrderDispersion (void)
double GetAccumulatedSecondOrderDispersion (void)
void ResetAccumulatedFirstOrderDispersionToZero (void)
void ResetAccumulatedSecondOrderDispersionToZero (void)
void SetAccumulatedFirstOrderDispersion (double Value)
void SetAccumulatedSecondOrderDispersion (double Value)
void SetWriteAccumulatedFirstOrderDispersionFlag (int Value)
void OpenAccumulatedFirstOrderDispersionFile (string FileName)
void CloseAccumulatedFirstOrderDispersionFile (void)
void WriteAccumulatedFirstOrderDispersion (double PropagatedLength)
 Writes out accumulated first order dispersion.
double GetAccumulatedTotalNoiseSpectralDensityGaussianStatistics (void)
void SetAccumulatedTotalNoiseSpectralDensityGaussianStatistics (double Value)
void AddToAccumulatedTotalNoiseSpectralDensityGaussianStatistics (double Increment)
void GainOfAccumulatedTotalNoiseSpectralDensityGaussianStatistics (double LinearPowerGainFactor)
double GetNoiseBandwidthGaussianStatistics (void)
void SetNoiseBandwidthGaussianStatistics (double Value)
typeSimulation GetTypeSimulation (void)
typePulse GetTypePulse (void)
int GetChannelArrayIndex (int ChannelPhysicalIndex)
int GetChannelPhysicalIndex (int ChannelArrayIndex)
double GetFrequency (int ChannelArrayIndex)
double GetWavelength (int ChannelArrayIndex)
double GetCenterFreq (void)
double GetCenterWavelength (void)
int GetNumChannels (void)
double GetBitLength (void)
int GetQtPoints (void)
double GetDeltaTime (void)
double GetFWHM_Pulse (void)
double GetBitRateChann (void)
int GetStringLength (void)
double GetChannSpacing (void)
double GetOptPowerChann (void)
double GetDeltaFreq (void)
double GetTimeWindow (void)
double GetFreqWindow (void)
int GetDebugLevel (void)
bool GetRandomPolarizationsFlag ()
bool GetUsingOptFiberLocalError (void)
double GetChirpParameter (void)
double GetInStokes (const int ChannelArrayIndex, const int StokesIndex)
cplx GetInJones (const int ChannelArrayIndex, int JonesIndex)
double * GetInStokes (const int ChannelArrayIndex)
cplxGetInJones (const int ChannelArrayIndex)
double GetFreqForPDVectorOFLE (void)
void GetRandomJones (cplx *Jones)
void TestGetRandomJones (string OutFileName, int NumberPoints)
void ResetPDVectorOFLE (void)
void SetNumberChannelsForDemuxer (int NumChannels2)
 Used by OptDemuxer class.
void SetNumChannels (const int NumChannels2)
 Used by OptDemuxer class.
void ReduceToSingleChannel (int ChannelArrayIndex)
 Used by OptDemuxer class.
void SetFWHM_Pulse (double Value)
void SetRiseTime (double Value)
void SetExtinctionRatio (double Value)
void SetOptPowerChannel (const double Power2)
void SetCenterFreq (const double CenterFreq2)
void SetChannSpacing (const double ChannSpacing2)
void SetFrequency (int ChannelArrayIndex, double Freq)
void SetInStokes (const int ChannelArrayIndex, const int StokesIndex, double StokesValue)
void SetInJones (const int ChannelArrayIndex, const int JonesIndex, cplx JonesValue)
void SetInStokes (const int ChannelArrayIndex, double *StokesVector)
void SetInJones (const int ChannelArrayIndex, cplx *JonesVector)
void SetRandomJonesVectors (void)
void SetEOM_RiseTime (double Value)
void SetEOM_ElecFilter_FreqFWHM (double Value)
void InitializeInStokes (ifstream *InFile)
int ReadInStokes (string InStokesName, int ch, ifstream *InFile)
void EliminateSignal (void)
 Sets signal data to zero.
void ClearSignal (void)
 Sets signal data to zero.
void EliminateX_Polarization (void)
 Sets signal data in X-polarization to zero.
void EliminateY_Polarization (void)
 Sets signal data in Y-polarization to zero.
void ScaleSignal (double ScaleFactor)
void SwitchXandYPolarizations (void)
double GetAveragePower (void)
 Returns average power of optical signal computed in time domain.
double GetAveragePowerFreqDomain (void)
double GetAveragePowerFreqDomainInsideChannels (void)
double GetAveragePowerFreqDomainInsideChannel (int ChannelArrayIndex)
cplx GetAutocorrelationFunctionOptSignalX (double TimeOffset)
 Returns integral of conj(tOptSignalX(t))*tOptSignalX(t+TimeOffset)dt.
double GetDegreeOfPolarization (void)
double GetDegreeOfPolarization (double BandWidth)
double GetDegreeOfPolarization (double RelMinFreq, double RelMaxFreq)
const char * WriteTypePulse (void)
void WriteDegreeOfPolarization (double PropLength, double RelMinFreq, double RelMaxFreq)
void OpenDegreeOfPolarizationFile (string InFileName, bool WriteDOPFlag)
void CloseDegreeOfPolarizationFile (bool WriteDOPFlag)
void GetTotalStokesParameters (double *Stokes)
 Computes the normalized Stokes parameters (4-vector).
void GetTotalStokesParametersInBandwidth (double *Stokes, double RelMinFreq, double RelMaxFreq)
void GetTotalStokesParametersInTime (double *Stokes, int RelMinTimeIndex, int RelMaxTimeIndex)
double GetDegreeOfPolarizationAndTotalStokesFreqDomain (double *Stokes)
double GetSigmaSqOptSignal (void)
 Our of date. Use ComputeRMSPulseWidth() instead.
double ComputeFWHMPulsePower (void)
void ImportOptSignal (OptSignal *oOptSignalOrig)
void DampBounds (double DampTime)
void Time2Freq (void)
 Does Fourier transform of OptSignal data from Time to Frequency.
void Time2FreqScalar (void)
void Freq2Time (void)
 Does Fourier transform of OptSignal data from Frequency to Time.
void Freq2TimeScalar (void)
void fftshift (void)
 Has same effect as function of same name in Matlab.
void ifftshift (void)
 Has same effect as function of same name in Matlab.
void TimeShiftSignal (double dTime)
void FreqShiftSignal (double dFreq)
void WriteFileTimePower (string outFile)
 Writes to a file: Time in column 1 and Optical Power in column 2.
void WriteFileFreqPower (string outFile)
void WriteFileWavelengthPower (string outFile)
void WriteFileFreqPower (string outFile, int TypeOutputFlag)
void WriteFileFreqPowerdBm (string outFile)
void WriteFileComplexFieldsTimeAndFreq (string OutFileName)
 Writes all complex fields to a file for quick restart.
void ReadFileComplexFieldsTimeAndFreq (string InFileName)
 Reads all complex fields to a file for quick restart.
void WriteComplexFields (string OutFileName, int ForRestartFlag)
void ReadComplexFields (string InFileName)
 Needs more debugging!
void ReadComplexFieldsX (string InFileName)
void WriteComplexFieldsX (string OutFileName, int ForRestartFlag)
 Writes to a file: Complex fields real(tX), imag(tX).
void WriteComplexFieldsFreq (string OutFileName)
void WriteFreqPhaseX (string OutFileName)
void WriteDistTimePowerPhase (string outFile, int timeIndexIncrement, double distance, int appendFlag)
void WriteDistTimePower (string outFile, int timeIndexIncrement, double distance, int appendFlag)
void WriteDistTimeCplxWave (string outFile, double distance, int appendFlag)
void WriteAveragePowerdBm (string OutFileName, double distance, int appendFlag)
void WritePowerdBmChannel (string OutFileName, double distance, int appendFlag, int ChannelArrayIndex)
void WritePowerdBmFreqWindow (string OutFileName, double distance, int appendFlag, double LeftFreq, double RightFreq)
void WriteFileTimeAmpPhase (string outFile)
double GetLocalFrequency (int timeIndex)
double GetChirp (int timeIndex)
double ComputeAverageChirpOfMarks (double TimeWithinBitSlot)
void WriteLocalFrequencyAndChirp (string outFile)
void WriteChirp (string outFile)
template<class T >
WrapPeriodically (T periodicVariable, T leftEndPoint, T rightEndPoint)
 Returns the result of wrapping a periodic variable, periodicVariable, so that it is in the range [leftEndPoint,rightEndPoint).
int GetFloorIndex (double Time)
 Returns integer index in range [0,qtPoints) corresponding to floor(WrappedTime/DeltaTime), where WrappedTime is in range [0,TimeWindow).
int GetCeilIndex (double Time)
 Returns wrapped integer index in range [0,qtPoints) corresponding to ceil(WrappedTime/DeltaTime), where WrappedTime is in range [0,TimeWindow).
double GetRealX (double Time)
 Returns real part of X-polarization of signal at time Time. We use linear interpolation of Time is not on the discrete time grid and interpret Time as being periodic in the range [0,TimeWindow).
double GetImagX (double Time)
 Returns imaginary part of X-polarization of signal at time Time.
double GetRealY (double Time)
 Returns real part of Y-polarization of signal at time Time.
double GetImagY (double Time)
 Returns imaginary part of Y-polarization of signal at time Time.
double GetEnergyInBitSlot (int BitSlotNumber)
double GetTotalEnergy (void)
double GetEnergyInTimeRange (double LeftTime, double RightTime)
double ComputeMeanTimePulse (void)
double ComputeMeanTimePulse (double StartTime, double EndTime)
double ComputeMeanFreqSignal (void)
double ComputeMeanPhasePulse (void)
double ComputeMeanPhasePulse (double StartTime, double EndTime)
 See McKinstrie and Xie, JSTQE Vol 8, no. 3, p616, 2002.
double ComputeRMSPulseWidth (void)
 Assumes single pulse.
double ComputeSigmaSqTimeWindow (double StartTime, double EndTime)
 Needs to be updated.
double ComputeAverageSigmaMarks (void)
 Calls OptSignal::ComputeSigmaSqTimeWindow().
double ComputeRMSSpectralWidth (void)
 Returns Root Mean Square signal bandwidth in Hz.
double ComputeMaxPower (void)
double ComputeMaxPower (int &ArgMaxIndex)
void OpenAveragePulseWidthFile (string FileName, int WriteFlag)
void CloseAveragePulseWidthFile (int WriteFlag)
void WriteAveragePulseWidth (double PropagatedLength, int WriteFlag)
 Calls OptSignal::GetSigmaSqOptSignal().
void ResetJonesMatrix (void)
void GenerateSignalStringGaussianOrSech (void)
 Called by OptSignal::RegenerateSignalString.
void GenerateSignalStringRZGaussianPattern (void)
 Called by OptSignal::RegenerateSignalString.
void GenerateSignalStringRaisedCosines (void)
 Out of date. Use GenerateSignalStringRaisedCosinesWithPhaseShift.
void GenerateSignalStringUsingInputSequence (void)
 Called by OptSignal::RegenerateSignalString.
void GenerateSignalStringQPSK_Gaussian (void)
 Called by OptSignal::RegenerateSignalString.
void GenerateSignalStringQPSK_CW (void)
void GenerateSignalStringNRZ_RCOS_MachZehnderModulator (void)
void GenerateSignalStringBPSKPhaseModulator (void)
void GenerateSignalStringBPSKMachZehnderModulator (void)
void GenerateSignalStringCSRZMachZehnderModulator (void)
void GenerateSignalStringRZ33MachZehnderModulator (void)
void GenerateSignalStringRZ50MachZehnderModulator (void)
void GenerateSignalStringQPSK_SEQ_PM_NRZ (void)
void GenerateSignalStringQPSK_DPMZ_PM_NRZ (void)
void GenerateSignalStringQPSK_SEQ_PM_AM_RZ33 (void)
void GenerateSignalStringQPSK_SEQ_PM_AM_RZ50 (void)
void GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33 (void)
void GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50 (void)
void EOM_MachZehnderModulatorOptData (double V_pi1, double V_pi2, double Phi_10, double Phi_20, double SinusoidalRate, double SinusoidalThetaShift)
void EOM_MachZehnderModulatorOptNRZOLD (double V_pi1, double V_pi2, double Phi_10, double Phi_20, double SinusoidalRate, double SinusoidalThetaShift)
void GenerateSignalStringCSRZMachZehnderModulatorOLD (void)
void GenerateSignalStringRZ33MachZehnderModulatorOLD (void)
void GenerateSignalStringRZ50MachZehnderModulatorOLD (void)
void EOM_MachZehnderModulatorElecNRZ (double V_pi1, double V_pi2, double Phi_10, double Phi_20, double SinusoidalRate, double SinusoidalTimeShift, double SinusoidalVertShift)
void SetEOM_V_pi_RelError (double EOM_V_pi_RelError2)
void SetEOM_Phi_10_RelError (double EOM_Phi_10_RelError2)
void SetEOM_Phi_20_RelError (double EOM_Phi_20_RelError2)
void SetEOM_SinusoidalVertShift_RelError (double EOM_SinusoidalVertShift_RelError2)
void EOM_WriteFileElecData (string OutFileName)
void EOM_SinusoidallyModulateElecData (double SinusoidalRate, double SinusoidalTimeShift, double SinusoidalVertShift)
void EOM_PhaseModulator (void)
string EOM_GetTypeElecData (void)
string EOM_GetTypeElecFilter (void)
void EOM_GenerateRaisedCosineBinaryElecData (int ChannelArrayIndex, bool ZeroOneNotMinusPlusFlag)
double RaisedCosineForNRZ_RCOS_MZ (double Time)
void EOM_GeneratePerfectRectBinaryElecData (int ChannelArrayIndex)
void EOM_GenerateSmoothedRectBinaryElecDataArctanh (int ChannelArrayIndex)
void EOM_GenerateSmoothedRectBinaryElecDataSuperGauss (int ChannelArrayIndex)
double EOM_SuperGauss (double Time)
void EOM_FilterElecData (void)
void EOM_ElectricalFilterBessel4 (cplx *my_power_time, double fwhm_norm)
void EOM_ElectricalFilterGaussian (cplx *my_power_time, double fwhm_norm)
cplx EOM_Bessel4 (double omega, double FWHM)
double EOM_Gaussian (double omega, double FWHM)
void ComputeRelevantNumModesOFLE (void)
int GetRelevantNumModesOFLE (void)
void SetBandwidthForRelevantNumModesOFLE (double BandwidthGHz)
void SetBitLengthJZ (double Value)
 USE WITH EXTREME CAUTION!! (Written for specific application by JZ).
void SetBitRateChannJZ (double Value)
 USE WITH EXTREME CAUTION!! (Written for specific application by JZ).
void SetBitRateChannBM (double Value)
 Do not use. Written for application by Brian Marks.
void AddSignalBM (OptSignal *oOptSignal2)
 Do not use. Written for application by Brian Marks.
void AddCWSignal (double PowerCWChann, double FreqCWChann)
 Do not use. Written for application by Brian Marks.

Public Attributes

cfftwfft
fftMatrices sfftM
BitStringoBitString
 A BitString object.
RanNumGenRNG
ReduOptSignaloReduOptSignal
cplxJonesMatrixChannel
OptFiberLocalErrorWorkSpace OFLEWork
 Common work space which is used by all OptFiberLocalError objects.
double * QuadratureWorkSpace
double * OutputPDVectorOFLE
double * InputPDVectorOFLE
double ** StokesTransferMatrixTransposeOFLE

Private Member Functions

void AllocateOptFiberLocalErrorWorkSpace (void)
void DeallocateOptFiberLocalErrorWorkSpace (void)

Private Attributes

typeSimulation TypeSimulation
int NumChannels
double CenterFreq
double CenterWavelength
double ChannSpacing
double * Frequency
double BitLength
 The time length in seconds of a bit.
double BitRateChann
typePulse TypePulse
int StringLength
 Number of bits.
double FWHM_Pulse
double ChirpParameter
double LinearExtinctionRatio
double RiseTime
double OptPowerChann
string InputTimeDataFileName
string InputSequenceFileName
double * InStokes
cplxInJones
bool RandomPolarizationsFlag
int qtPoints
double TimeWindow
double DeltaTime
double FreqWindow
double DeltaFreq
double AccumulatedFirstOrderDispersion
double AccumulatedSecondOrderDispersion
ofstream AccumulatedFirstOrderDispersionFile
int WriteAccumulatedFirstOrderDispersionFlag
ofstream AveragePulseWidthFile
ofstream DegreeOfPolarizationFile
double FreqForPDVectorOFLE
bool ComputeInputPDVectorFlagOFLE
int RelevantNumModesOFLE
bool ComputeRelevantNumModesOFLEFlag
int DebugLevel
 DebugLevel.
int MemAllocated
bool UsingOptFiberLocalError
double AccumulatedTotalNoiseSpectralDensityGaussianStatistics
double NoiseBandwidthGaussianStatistics
typeEOMElecData TypeEOMElecData
typeEOMElecFilter TypeEOMElecFilter
fftPowerMatrices EOM_sfftPM
fftPowerMatrices EOM_sfftPM1
fftPowerMatrices EOM_sfftPM2
double EOM_RiseTime
double EOM_SlopeFactor
double EOM_ShiftAmt
int EOM_SuperGaussExponent
double EOM_ElecFilter_FreqFWHM
double EOM_V_pi_RelError
double EOM_Phi_10_RelError
double EOM_Phi_20_RelError
double EOM_SinusoidalVertShift_RelError

Friends

void AddSignals (OptSignal *Signal1, OptSignal *Signal2, OptSignal *Signal3)
 Addition operator: Signal3 = Signal1 + Signal2.

Detailed Description

The OptSignal class contains data and methods for the optical signal.

Overview

The classes in the library either operate on optical data in the class OptSignal or on electrical data in the class Photodetector. As such the OptSignal class is the most important in the library. The class enables several different modulation formats most of which are coded for multiple frequency channels.

See also:
OptSignal::TypePulse

Both SCALAR and VECTOR simulations can performed with the library. The enumeration type enum typeSimulation defined in ocsReadWriteTools.hh specifies the type of simulation. (OptSignal::TypeSimulation). Half the amount of data is allocated for SCALAR simulations as for VECTOR ones. Therefore the code runs about twice as fast for SCALAR simulations.

The main data object in the class is the structure OptSignal::sfftM of type fftMatrices which stores the full time and frequency domain signals. The class contains a pointer to a cfftw object OptSignal::fft. The cfftw class is an interface to the Fastest Fourier Transform in the West softpackage fftw which manages and performs Fourier transforms in the code. See http:www.fftw.org

Data can either be SCALAR or VECTOR. For VECTOR simulations the initial Stokes parameters can be specified for each channel.

See also:
OptSignal::InitializeInStokes(),
OptSignal::GetInStokes(),
OptSignal::SetInStokes()

Data for Noise Modeling

The OptSignal class also includes data to model additive white Gaussian noise. The full signal data and the additive white Gaussian noise can be used by the GaussianReceiver class to compute the Gaussian apprximations to the electrical pdfs in each bit. Accurate electrical pdfs can be computed using the ChiSquareReceiver class. The ChiSquareReceiver class can be used in conjunction with the NoiseCovariance class to compute electrical pdfs under the assumption of no noise-noise interactions during fiber transmission. (Signal-noise interactions in the fiber are modeled by the NoiseCovariance class.) The electrical pdfs can also be approximated using basic or advanced Monte carlo simulations, for which the noise does not need to be AWGN.

To model unpolarized additive white Gaussian noise the noise is accumulated in the double OptSignal::AccumulatedTotalNoiseSpectralDensityGaussianStatistics. With this model the noise is assumed to be identical in each of the channels. To model partially polarized noise and/or white Gaussian noise that varies from channel to channel we use a ReduOptSignal object. The data member OptSignal::oReduOptSignal is a pointer to a ReduOptSignal object that stores the power and polarization states of the signal and noise in each channel. The ReduOptSignal is incorporated into the OptSignal to allow the GaussianReceiver class to receive the data it needs to model partially polarized additive white Gaussian noise.

Warning:
Although the ReduOptSignal class was written and tested for wavelength-division multiplexed (WDM) signals the GaussianReceiver class has only been carefully tested for single channel signals.

The OptSignal class also contains data members OptSignal::AccumulatedFirstOrderDispersion and OptSignal::AccumulatedSecondOrderDispersion that store the first and second order dispersion accumulated when the signal is propagated through (possibly several) different OptFiberLocalError objects. One application of these methods is to perform artificial dispersion compensation in the NoiseCovariance class.

Associated Classes

The OptSignal class includes pointers to a BitString object OptSignal::oBitString and a RanNumGen object OptSignal::RNG. The BitString object contains and initializes the data sequence in each channel. The RanNumGen object is included to allow random bit strings and random polarization states in each channel.

Main Methods

The main methods are the constructors, assignment operator, and the method OptSignal::RegenerateSignalString() which is used to regenerate the signal in Monte Carlo simulations. (This method is also called by the constructors.)

In addition there are methods to get and set class parameters, process accumulated dispersion and noise spectral density, write various forms of the optical data to output files, and compute and write to files derived data such as the energy within a time window and the central time of a pulse specified within a time window.

A Sample Input Parameter File

Signal.in

Example Application

See also:
OptFiberLocalError (See example application there)

Constructor & Destructor Documentation

OptSignal::OptSignal ( string  InFileName,
RanNumGen RNG2 
)

The main constructor for the class.

Reads in parameters from the file named InFileName. The RanNumGen is used for randomly generated bit sequences and for randomly chosen initial polarization states in each channel. Initializes all data in the class.

The constructor calls OptSignal::ConstructOptSignal() which reads in parameters and does preprocessing. Then it calls OptSignal::RegenerateSignalString() which initializes the data OptSignal::fftMatrices used to store the signal in time and frequency.

If you add another variable/parameter to the class you must initialize it in OptSignal::ConstructOptSignal() and also make the appropriate addition to the following methods:

  1. OptSignal::OptSignal(OptSignal & OrigOptSignal)
  2. OptSignal::OptSignal & operator=(OptSignal & RHS_Signal)
  3. OptSignal::OptSignal & operator-(OptSignal & Signal2)
  4. OptSignal::OptSignal(OptSignal & Signal1,OptSignal & Signal2, RanNumGen *RNG3)
  5. friend void AddSignals(OptSignal * Signal1,OptSignal * Signal2, OptSignal * Signal3)

References ConstructOptSignal(), DebugLevel, GetAveragePower(), Linear2dBm(), LogFile, NumChannels, OptPowerChann, RegenerateSignalString(), and sq().

Referenced by operator-().

OptSignal::OptSignal ( string  InFileName,
RanNumGen RNG2,
string  DataFileName 
)

A second constructor for the class.

Use this constructor if you want to quickly initialize signal in time and frequency using data in file named DataFileName

Reads in parameters from the file named InFileName. The RanNumGen is used for randomly generated bit sequences and for randomly chosen initial polarization states in each channel. Initializes all data in the class.

The method reads in the signal data arrays from the file with name DataFileName.

This constructor calls OptSignal::ConstructOptSignal() which reads in parameters and does preprocessing. Then it calls OptSignal::ReadFileComplexFieldsTimeAndFreq() which initializes the data OptSignal::fftMatrices used to store the signal in time and frequency.

If you add another variable/parameter to the class you must initialize it in OptSignal::ConstructOptSignal() and also make the appropriate addition to the following methods:

  1. OptSignal::OptSignal(OptSignal & OrigOptSignal)
  2. OptSignal::OptSignal & operator=(OptSignal & RHS_Signal)
  3. OptSignal::OptSignal & operator-(OptSignal & Signal2)
  4. OptSignal::OptSignal(OptSignal & Signal1,OptSignal & Signal2, RanNumGen *RNG3)
  5. friend void AddSignals(OptSignal * Signal1,OptSignal * Signal2, OptSignal * Signal3)

Use this constructor if you want to quickly initialize signal in time and frequency using data in file named DataFileName

References ConstructOptSignal(), DebugLevel, GetAveragePower(), Linear2dBm(), LogFile, NumChannels, OptPowerChann, ReadFileComplexFieldsTimeAndFreq(), and sq().

OptSignal::OptSignal ( OptSignal OrigOptSignal  ) 

Copy constructor.

References AccumulatedFirstOrderDispersion, AccumulatedSecondOrderDispersion, AccumulatedTotalNoiseSpectralDensityGaussianStatistics, AllocateOptFiberLocalErrorWorkSpace(), BitLength, BitRateChann, BPSK_MACH_ZEHNDER, BPSK_PHASE_MOD, CenterFreq, CenterWavelength, ChannSpacing, ChirpParameter, ComputeInputPDVectorFlagOFLE, ComputeRelevantNumModesOFLEFlag, CSRZ_MACH_ZEHNDER, DebugLevel, DeltaFreq, DeltaTime, EOM_ElecFilter_FreqFWHM, EOM_Phi_10_RelError, EOM_Phi_20_RelError, EOM_sfftPM, EOM_sfftPM1, EOM_sfftPM2, EOM_ShiftAmt, EOM_SinusoidalVertShift_RelError, EOM_SlopeFactor, EOM_SuperGaussExponent, EOM_V_pi_RelError, fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, fftPowerMatrices::fPowerSignal, FreqForPDVectorOFLE, Frequency, FreqWindow, FWHM_Pulse, GetInJones(), GetInStokes(), BitString::GetStringLength(), InJones, InputPDVectorOFLE, InStokes, LinearExtinctionRatio, MemAllocated, NewCplx(), NoiseBandwidthGaussianStatistics, NRZ_RCOS_MACH_ZEHNDER, NumChannels, oBitString, OptPowerChann, oReduOptSignal, OutputPDVectorOFLE, QPSK_CW, QPSK_DPMZ_PM_AM_RZ33, QPSK_DPMZ_PM_AM_RZ50, QPSK_DPMZ_PM_NRZ, QPSK_SEQ_PM_AM_RZ33, QPSK_SEQ_PM_AM_RZ50, QPSK_SEQ_PM_NRZ, qtPoints, QuadratureWorkSpace, RandomPolarizationsFlag, RelevantNumModesOFLE, RiseTime, RNG, RZ33_MACH_ZEHNDER, RZ50_MACH_ZEHNDER, SetInJones(), SetInStokes(), sfftM, StokesTransferMatrixTransposeOFLE, StringLength, Time2Freq(), TimeWindow, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, fftPowerMatrices::tPowerSignal, TypeEOMElecData, TypeEOMElecFilter, TypePulse, TypeSimulation, UsingOptFiberLocalError, and VECTOR.

OptSignal::OptSignal ( OptSignal Signal1,
OptSignal Signal2,
RanNumGen RNG3 
)

Constructor for sum of signals.

This signal is initialized with parameters of Signal1 and data given by sum of data of Signal1 and Signal2.

Warning:
Does not work when oReducedOptSignal is important

References AccumulatedFirstOrderDispersion, AccumulatedSecondOrderDispersion, AccumulatedTotalNoiseSpectralDensityGaussianStatistics, AllocateOptFiberLocalErrorWorkSpace(), BitLength, BitRateChann, CenterFreq, CenterWavelength, ChannSpacing, ChirpParameter, ComputeInputPDVectorFlagOFLE, ComputeRelevantNumModesOFLEFlag, DebugLevel, DeltaFreq, DeltaTime, fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, FreqForPDVectorOFLE, Frequency, FreqWindow, FWHM_Pulse, GetBitRateChann(), GetCenterFreq(), GetFWHM_Pulse(), GetInJones(), GetInStokes(), GetQtPoints(), BitString::GetStringLength(), GetStringLength(), GetTypePulse(), GetTypeSimulation(), InJones, InputPDVectorOFLE, InStokes, LinearExtinctionRatio, LogFile, LogFileSeparator(), MemAllocated, min(), NewCplx(), NoiseBandwidthGaussianStatistics, NumChannels, oBitString, OptPowerChann, oReduOptSignal, OutputPDVectorOFLE, qtPoints, RandomPolarizationsFlag, RelevantNumModesOFLE, ResetAccumulatedFirstOrderDispersionToZero(), ResetAccumulatedSecondOrderDispersionToZero(), RiseTime, RNG, SetInJones(), SetInStokes(), sfftM, StokesTransferMatrixTransposeOFLE, StringLength, TimeWindow, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, TypePulse, TypeSimulation, UsingOptFiberLocalError, VECTOR, BitString::WriteBitString(), and WriteTypePulse().

OptSignal::~OptSignal (  ) 

Member Function Documentation

void OptSignal::AddCWSignal ( double  PowerCWChann,
double  FreqCWChann 
)

Do not use. Written for application by Brian Marks.

References CenterFreq, DeltaTime, jc, pi, qtPoints, sfftM, sqrt(), Time2Freq(), fftMatrices::tOptSignalX, and fftMatrices::tOptSignalY.

void OptSignal::AddFreqDomain ( OptSignal oOptSignal2  ) 

Adds frequency domain data in oOptSignal2 to this OptSignal and then calls OptSignal:Freq2Time()

References fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, Freq2Time(), GetQtPoints(), qtPoints, and sfftM.

void OptSignal::AddReducedNoiseToNoiseFreeSignal ( ReduOptSignal ReduOptSignal1  ) 

Adds a ReduOptSignal containing noise and no signal to the current OptSignal which is assumed to be noise-free. By John Zweck, Jan 2006

References ReduOptSignal::GetNumChannels(), ReduOptSignal::GetTotalNoiseSpectralDensity(), NumChannels, oReduOptSignal, SetAccumulatedTotalNoiseSpectralDensityGaussianStatistics(), and ReduOptSignal::StokesNoise.

void OptSignal::AddSignalBM ( OptSignal oOptSignal2  ) 
void OptSignal::AddToAccumulatedTotalNoiseSpectralDensityGaussianStatistics ( double  Increment  )  [inline]
void OptSignal::AllocateOptFiberLocalErrorWorkSpace ( void   )  [private]
void OptSignal::ChangeAbsoluteCenterFreq ( double  CenterFreq2  ) 
void OptSignal::ChangeAveragePowerChannCurrentSignal ( double  AveragePowerChann2  ) 
void OptSignal::ClearSignal ( void   )  [inline]

Sets signal data to zero.

void OptSignal::CloseAccumulatedFirstOrderDispersionFile ( void   ) 
void OptSignal::CloseAveragePulseWidthFile ( int  WriteFlag  ) 
void OptSignal::CloseDegreeOfPolarizationFile ( bool  WriteDOPFlag  ) 
double OptSignal::ComputeAverageChirpOfMarks ( double  TimeWithinBitSlot  ) 

Computes the average chirp of the marks (1's) at a given time within the bit slot by making calls to OptSignal::GetChirp().

Warning:
Only works for a single channel SCALAR signals.

References BitLength, DeltaTime, BitString::GetBit(), GetChirp(), oBitString, qtPoints, and StringLength.

double OptSignal::ComputeAverageSigmaMarks ( void   ) 

Calls OptSignal::ComputeSigmaSqTimeWindow().

Warning:
This returns a quantity like a std deviation not a variance

References BitLength, ComputeSigmaSqTimeWindow(), BitString::GetBit(), oBitString, sqrt(), and StringLength.

double OptSignal::ComputeFWHMPulsePower ( void   ) 

Computes FWHM of a pulse power assuming signal has a single pulse which is centered roughly in middle of time window. Algorithm is very crude.

References ComputeMaxPower(), DeltaTime, qtPoints, sfftM, sq(), fftMatrices::tOptSignalX, and fftMatrices::tOptSignalY.

double OptSignal::ComputeMaxPower ( void   ) 
double OptSignal::ComputeMaxPower ( int &  ArgMaxIndex  ) 
double OptSignal::ComputeMeanFreqSignal ( void   ) 
double OptSignal::ComputeMeanPhasePulse ( void   ) 

References TimeWindow.

double OptSignal::ComputeMeanPhasePulse ( double  StartTime,
double  EndTime 
)

See McKinstrie and Xie, JSTQE Vol 8, no. 3, p616, 2002.

References DeltaTime, qtPoints, Quadrature(), QuadratureWorkSpace, SCALAR, sfftM, sq(), TimeWindow, fftMatrices::tOptSignalX, TypeSimulation, and VECTOR.

double OptSignal::ComputeMeanTimePulse ( void   ) 

Computes mean time pulse width, using same formula used to compute mean of a pdf. Integration is over specified time window

References TimeWindow.

Referenced by ComputeRMSPulseWidth(), and PulseEvolutionAnalyzer::ComputeTimeShift().

double OptSignal::ComputeMeanTimePulse ( double  StartTime,
double  EndTime 
)
void OptSignal::ComputeRelevantNumModesOFLE ( void   ) 

Computes the RelevantNumModes used in computation of local error in OptFiberLocalError

References BitRateChann, ComputeRelevantNumModesOFLEFlag, DebugLevel, DeltaFreq, LogFile, min(), NumChannels, qtPoints, and RelevantNumModesOFLE.

Referenced by ConstructOptSignal(), and SetBitRateChannBM().

double OptSignal::ComputeRMSPulseWidth ( void   ) 
double OptSignal::ComputeRMSSpectralWidth ( void   ) 

Returns Root Mean Square signal bandwidth in Hz.

References fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, cfftw::freq(), qtPoints, sfftM, sq(), sqrt(), TypeSimulation, and VECTOR.

Referenced by OptFiberLocalError::ComputeWalkOffStepSize().

double OptSignal::ComputeSigmaSqTimeWindow ( double  StartTime,
double  EndTime 
)
void OptSignal::ConstantPhaseShift ( double  PhaseShiftAmount  ) 

Shifts the phase of the signal by the constant amount PhaseShiftAmount in degrees

References fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, jc, pi, qtPoints, sfftM, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, TypeSimulation, and VECTOR.

void OptSignal::ConstructOptSignal ( string  InFileName,
RanNumGen RNG2 
)

Called by the constructors

  1. OptSignal(string InFileName, RanNumGen *RNG2, string DataFileName)
  2. OptSignal(string InFileName, RanNumGen *RNG2)

Reads in parameters from the file named InFileName. The RanNumGen is used for randomly generated bit sequences and for randomly chosen initial polarization states in each channel. Initializes all data in the class.

If you add another variable/parameter to the class you must initialize it in this method and also make the appropriate addition to the following methods:

  1. OptSignal::OptSignal(OptSignal & OrigOptSignal)
  2. OptSignal::OptSignal & operator=(OptSignal & RHS_Signal)
  3. OptSignal::OptSignal & operator-(OptSignal & Signal2)
  4. OptSignal::OptSignal(OptSignal & Signal1,OptSignal & Signal2, RanNumGen *RNG3)
  5. friend void AddSignals(OptSignal * Signal1,OptSignal * Signal2, OptSignal * Signal3)
Warning:
To ensure the signal is discretized well the central frequency is each channel is adjusted slightly so that it falls on the frequency grid. Actual frequencies used are written to the LogFile.

References AccumulatedFirstOrderDispersion, AccumulatedSecondOrderDispersion, AccumulatedTotalNoiseSpectralDensityGaussianStatistics, AllocateOptFiberLocalErrorWorkSpace(), BitLength, BitRateChann, BPSK_MACH_ZEHNDER, BPSK_PHASE_MOD, CenterFreq, CenterWavelength, ChannSpacing, ChirpParameter, ComputeInputPDVectorFlagOFLE, ComputeRelevantNumModesOFLE(), ComputeRelevantNumModesOFLEFlag, CSRZ_MACH_ZEHNDER, dB2Linear(), DebugLevel, DeltaFreq, DeltaTime, EOM_BINARY_DATA_ARCTANH_SMOOTHING, EOM_BINARY_DATA_RCOS, EOM_BINARY_DATA_SUPERGAUSS_SMOOTHING, EOM_ElecFilter_FreqFWHM, EOM_GetTypeElecData(), EOM_GetTypeElecFilter(), EOM_NO_ELEC_FILTER, EOM_Phi_10_RelError, EOM_Phi_20_RelError, EOM_RiseTime, EOM_sfftPM, EOM_sfftPM1, EOM_sfftPM2, EOM_ShiftAmt, EOM_SinusoidalVertShift_RelError, EOM_SlopeFactor, EOM_SuperGaussExponent, EOM_V_pi_RelError, fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, fftPowerMatrices::fPowerSignal, FreqForPDVectorOFLE, Frequency, Frequency2Wavelength(), FreqWindow, FWHM_Pulse, GetChannelPhysicalIndex(), GetInStokes(), BitString::GetNumChannels(), BitString::GetStringLength(), InitializeInStokes(), InJones, INPUT_SEQUENCE, INPUT_SIGNAL_FROM_FILE, InputPDVectorOFLE, InputSequenceFileName, InputTimeDataFileName, InStokes, JonesMatrixChannel, LinearExtinctionRatio, LogFile, LogFileSeparator(), LogFileStars(), LOWER_AND_UPPER, LOWER_ONLY, MANDATORY, MemAllocated, NewCplx(), NO_BOUNDS, NoiseBandwidthGaussianStatistics, NRZ_RCOS_MACH_ZEHNDER, NumChannels, oBitString, OPTIONAL_NO_WARNING, OPTIONAL_WARNING, OptPowerChann, oReduOptSignal, OutputPDVectorOFLE, pi, QPSK_CW, QPSK_DPMZ_PM_AM_RZ33, QPSK_DPMZ_PM_AM_RZ50, QPSK_DPMZ_PM_NRZ, QPSK_SEQ_PM_AM_RZ33, QPSK_SEQ_PM_AM_RZ50, QPSK_SEQ_PM_NRZ, qtPoints, QuadratureWorkSpace, RandomPolarizationsFlag, ReadDouble(), ReadInt(), ReadString(), ResetAccumulatedFirstOrderDispersionToZero(), ResetAccumulatedSecondOrderDispersionToZero(), RiseTime, RNG, RZ33_MACH_ZEHNDER, RZ50_MACH_ZEHNDER, SetInJones(), sfftM, sqrt(), Stokes2Jones(), StokesTransferMatrixTransposeOFLE, StringLength, TimeWindow, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, fftPowerMatrices::tPowerSignal, TypeEOMElecData, TypeEOMElecFilter, TypePulse, TypeSimulation, UPPER_ONLY, UsingOptFiberLocalError, VECTOR, Wavelength2Frequency(), WriteTypePulse(), and WriteTypeSimulation().

Referenced by OptSignal().

void OptSignal::DampBounds ( double  DampTime  ) 
void OptSignal::DeallocateOptFiberLocalErrorWorkSpace ( void   )  [private]
void OptSignal::EliminateSignal ( void   )  [inline]

Sets signal data to zero.

void OptSignal::EliminateX_Polarization ( void   ) 

Sets signal data in X-polarization to zero.

References fftMatrices::fOptSignalX, qtPoints, sfftM, and fftMatrices::tOptSignalX.

void OptSignal::EliminateY_Polarization ( void   ) 

Sets signal data in Y-polarization to zero.

References fftMatrices::fOptSignalY, qtPoints, sfftM, and fftMatrices::tOptSignalY.

cplx OptSignal::EOM_Bessel4 ( double  omega,
double  FWHM 
)
void OptSignal::EOM_ElectricalFilterBessel4 ( cplx my_power_time,
double  fwhm_norm 
)
void OptSignal::EOM_ElectricalFilterGaussian ( cplx my_power_time,
double  fwhm_norm 
)
void OptSignal::EOM_FilterElecData ( void   ) 
double OptSignal::EOM_Gaussian ( double  omega,
double  FWHM 
)

References sq().

Referenced by EOM_ElectricalFilterGaussian().

void OptSignal::EOM_GeneratePerfectRectBinaryElecData ( int  ChannelArrayIndex  ) 
void OptSignal::EOM_GenerateRaisedCosineBinaryElecData ( int  ChannelArrayIndex,
bool  ZeroOneNotMinusPlusFlag 
)
void OptSignal::EOM_GenerateSmoothedRectBinaryElecDataArctanh ( int  ChannelArrayIndex  ) 
void OptSignal::EOM_GenerateSmoothedRectBinaryElecDataSuperGauss ( int  ChannelArrayIndex  ) 
string OptSignal::EOM_GetTypeElecData ( void   ) 
string OptSignal::EOM_GetTypeElecFilter ( void   ) 
void OptSignal::EOM_MachZehnderModulatorElecNRZ ( double  V_pi1,
double  V_pi2,
double  Phi_10,
double  Phi_20,
double  SinusoidalRate,
double  SinusoidalTimeShift,
double  SinusoidalVertShift 
)
void OptSignal::EOM_MachZehnderModulatorOptData ( double  V_pi1,
double  V_pi2,
double  Phi_10,
double  Phi_20,
double  SinusoidalRate,
double  SinusoidalThetaShift 
)
void OptSignal::EOM_MachZehnderModulatorOptNRZOLD ( double  V_pi1,
double  V_pi2,
double  Phi_10,
double  Phi_20,
double  SinusoidalRate,
double  SinusoidalThetaShift 
)
void OptSignal::EOM_PhaseModulator ( void   ) 
void OptSignal::EOM_SinusoidallyModulateElecData ( double  SinusoidalRate,
double  SinusoidalTimeShift,
double  SinusoidalVertShift 
)
double OptSignal::EOM_SuperGauss ( double  Time  ) 
void OptSignal::EOM_WriteFileElecData ( string  OutFileName  ) 
void OptSignal::fftshift ( void   ) 

Has same effect as function of same name in Matlab.

References fft, cfftw::fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, sfftM, TypeSimulation, and VECTOR.

Referenced by ChangeAbsoluteCenterFreq(), and TimeShiftSignal().

void OptSignal::Freq2Time ( void   ) 
void OptSignal::Freq2TimeScalar ( void   ) 

Does Fourier transform of OptSignal data from Frequency to Time for SCALAR signal

References fft, fftMatrices::fOptSignalX, cfftw::IFFT(), sfftM, fftMatrices::tOptSignalX, TypeSimulation, and VECTOR.

void OptSignal::FreqShiftSignal ( double  dFreq  ) 
void OptSignal::GainOfAccumulatedTotalNoiseSpectralDensityGaussianStatistics ( double  LinearPowerGainFactor  )  [inline]
void OptSignal::GenerateImpulseSignal ( void   ) 
void OptSignal::GenerateSignalStringBPSKMachZehnderModulator ( void   ) 
void OptSignal::GenerateSignalStringBPSKPhaseModulator ( void   ) 

References EOM_PhaseModulator().

Referenced by RegenerateSignalString().

void OptSignal::GenerateSignalStringCSRZMachZehnderModulator ( void   ) 
void OptSignal::GenerateSignalStringCSRZMachZehnderModulatorOLD ( void   ) 
void OptSignal::GenerateSignalStringGaussianOrSech ( void   ) 
void OptSignal::GenerateSignalStringGaussianOrSechWithPhaseShift ( double  PhaseShiftAmount  ) 
void OptSignal::GenerateSignalStringNRZ_RCOS_MachZehnderModulator ( void   ) 
void OptSignal::GenerateSignalStringQPSK_CW ( void   ) 
void OptSignal::GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33 ( void   ) 
void OptSignal::GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50 ( void   ) 
void OptSignal::GenerateSignalStringQPSK_DPMZ_PM_NRZ ( void   ) 
void OptSignal::GenerateSignalStringQPSK_Gaussian ( void   ) 
void OptSignal::GenerateSignalStringQPSK_SEQ_PM_AM_RZ33 ( void   ) 
void OptSignal::GenerateSignalStringQPSK_SEQ_PM_AM_RZ50 ( void   ) 
void OptSignal::GenerateSignalStringQPSK_SEQ_PM_NRZ ( void   ) 
void OptSignal::GenerateSignalStringRaisedCosines ( void   ) 
void OptSignal::GenerateSignalStringRaisedCosinesWithPhaseShift ( double  PhaseShiftAmount  ) 
void OptSignal::GenerateSignalStringRZ33MachZehnderModulator ( void   ) 
void OptSignal::GenerateSignalStringRZ33MachZehnderModulatorOLD ( void   ) 
void OptSignal::GenerateSignalStringRZ50MachZehnderModulator ( void   ) 
void OptSignal::GenerateSignalStringRZ50MachZehnderModulatorOLD ( void   ) 
void OptSignal::GenerateSignalStringRZGaussianPattern ( void   ) 
void OptSignal::GenerateSignalStringUsingInputSequence ( void   ) 
double OptSignal::GetAccumulatedFirstOrderDispersion ( void   )  [inline]
double OptSignal::GetAccumulatedSecondOrderDispersion ( void   )  [inline]
double OptSignal::GetAccumulatedTotalNoiseSpectralDensityGaussianStatistics ( void   )  [inline]
cplx OptSignal::GetAutocorrelationFunctionOptSignalX ( double  TimeOffset  ) 

Returns integral of conj(tOptSignalX(t))*tOptSignalX(t+TimeOffset)dt.

By John Zweck. Not the best way to code it up, but should do for now

References DeltaTime, qtPoints, sfftM, TimeWindow, and fftMatrices::tOptSignalX.

Referenced by GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized().

double OptSignal::GetAveragePower ( void   ) 

Returns average power of optical signal computed in time domain.

See separate document on Conventions for the Fourier Transform and Nonlinear Schroedinger Equation

References GetTotalEnergy(), and TimeWindow.

Referenced by ChangeAveragePowerChannCurrentSignal(), ElecSignalStat::GetEnhancementFactor(), ElecSignalStat::GetNormalizedEnhancementFactor(), ChiSquareReceiver::GetOSNR_dB(), OptSignal(), NoiseCovariance::Propagator(), and NoiseCovariance::SetCovarianceMatrixAWGN().

double OptSignal::GetAveragePowerFreqDomain ( void   ) 
double OptSignal::GetAveragePowerFreqDomainInsideChannel ( int  ChannelArrayIndex  ) 

Returns the total power in frequency interval centered on channel with index ChannelArrayIndex and full-width 2*OptSignalChannelSpacing.

ChannelArrayIndex ranges from 0 to OptSignalNumChanns - 1

References CenterFreq, ChannSpacing, DeltaFreq, fft, cfftw::fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, Frequency, cfftw::ifftshift(), qtPoints, sfftM, and sq().

double OptSignal::GetAveragePowerFreqDomainInsideChannels ( void   ) 
double OptSignal::GetBitLength ( void   )  [inline]
double OptSignal::GetBitRateChann ( void   )  [inline]
int OptSignal::GetCeilIndex ( double  Time  ) 

Returns wrapped integer index in range [0,qtPoints) corresponding to ceil(WrappedTime/DeltaTime), where WrappedTime is in range [0,TimeWindow).

References DeltaTime, qtPoints, and TimeWindow.

Referenced by GetImagX(), GetImagY(), GetRealX(), and GetRealY().

double OptSignal::GetCenterFreq ( void   )  [inline]
double OptSignal::GetCenterWavelength ( void   )  [inline]
int OptSignal::GetChannelArrayIndex ( int  ChannelPhysicalIndex  ) 
int OptSignal::GetChannelPhysicalIndex ( int  ChannelArrayIndex  ) 
double OptSignal::GetChannSpacing ( void   )  [inline]
double OptSignal::GetChirp ( int  timeIndex  ) 

Rteurns the chirp of SCALAR complex wave at at time given by timeIndex in range 0 to OptSignal::qtPoints

The Chirp of a complex wave E(t) = A(t) exp(i Phi(t)) is defined to be

Chirp(t) = -d^2Phi/dt^2

Chirp is in Hz^2 whereas LocalFrequency is in Hz.

Usually we are interested in computing the Chirp at time t_0 = central time of a given pulse. The negative sign is included so that the sign of the chirp agrees with the sign of the chirp parameter C in [NLO,p67]

The pulse can then be approximated by using a Taylor's series for Phi(t) about t_0

E(t) ~ A(t) exp( i [Phi(t_0) - 2*pi*LocalFrequency(t_0)*(t-t_0) - 0.5*4*pi^2*Chirp(t_0)*(t-t_0)^2] )

The Chirp at t = timeIndex*DeltaTime is computed from the phase by using a central difference to approximate the 2nd derivative (for second order accuracy).

References DeltaTime, GetPhase(), pi, qtPoints, sfftM, sq(), fftMatrices::tOptSignalX, TypeSimulation, and VECTOR.

Referenced by ComputeAverageChirpOfMarks(), WriteChirp(), and WriteLocalFrequencyAndChirp().

double OptSignal::GetChirpParameter ( void   )  [inline]
int OptSignal::GetDebugLevel ( void   )  [inline]
double OptSignal::GetDegreeOfPolarization ( double  RelMinFreq,
double  RelMaxFreq 
)
double OptSignal::GetDegreeOfPolarization ( double  BandWidth  ) 
double OptSignal::GetDegreeOfPolarization ( void   ) 
double OptSignal::GetDegreeOfPolarizationAndTotalStokesFreqDomain ( double *  Stokes  ) 

Computes the degree of polarization and total Stokes parameters using the frequency domain data only. JZ Sep 7th 2002.

You can either caluclate the degree of polarization and the total Stokes parameters in the frequency domain or the time domain. The answers are the same.

Computes the degree of polarization and total Stokes parameters using the frequency domain data only. JZ Sep 7th 2002.

You can either caluclate the degree of polarization and the total Stokes parameters in the frequency domain or the time domain. The answers are the same. Depending on your particular application it might be quicker to compute it in the time domain. JZ Sep 7th 2002.

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

double OptSignal::GetDeltaFreq ( void   )  [inline]
double OptSignal::GetDeltaTime ( void   )  [inline]
double OptSignal::GetEnergyInBitSlot ( int  BitSlotNumber  ) 

BitSlotNumber must be in range [0,OptSignal::StringLength)

See also:
GetEnergyInTimeRange

References DeltaTime, GetEnergyInTimeRange(), and StringLength.

double OptSignal::GetEnergyInTimeRange ( double  LeftTime,
double  RightTime 
)
int OptSignal::GetFloorIndex ( double  Time  ) 

Returns integer index in range [0,qtPoints) corresponding to floor(WrappedTime/DeltaTime), where WrappedTime is in range [0,TimeWindow).

References DeltaTime, and TimeWindow.

Referenced by GetImagX(), GetImagY(), GetRealX(), and GetRealY().

double OptSignal::GetFreqForPDVectorOFLE ( void   )  [inline]
double OptSignal::GetFrequency ( int  ChannelArrayIndex  ) 
double OptSignal::GetFreqWindow ( void   )  [inline]
double OptSignal::GetFWHM_Pulse ( void   )  [inline]
double OptSignal::GetImagX ( double  Time  ) 

Returns imaginary part of X-polarization of signal at time Time.

See also:
OptSignal::GetRealX()

References DeltaTime, GetCeilIndex(), GetFloorIndex(), sfftM, TimeWindow, and fftMatrices::tOptSignalX.

double OptSignal::GetImagY ( double  Time  ) 

Returns imaginary part of Y-polarization of signal at time Time.

See also:
OptSignal::GetRealX()

References DeltaTime, GetCeilIndex(), GetFloorIndex(), sfftM, TimeWindow, and fftMatrices::tOptSignalY.

cplx OptSignal::GetInJones ( const int  ChannelArrayIndex,
int  JonesIndex 
)
cplx * OptSignal::GetInJones ( const int  ChannelArrayIndex  ) 

References InJones.

double OptSignal::GetInStokes ( const int  ChannelArrayIndex,
const int  StokesIndex 
)
double * OptSignal::GetInStokes ( const int  ChannelArrayIndex  ) 

References InStokes.

double OptSignal::GetLocalFrequency ( int  timeIndex  ) 

Returns local frequency of SCALAR complex wave at time given by timeIndex in range 0 to OptSignal::qtPoints

Local Frequency of a complex wave E(t) = A(t) exp(i Phi(t)) is defined to be (see for example [Agrawal, Nonlinear Optics,p91])

LocalFrequency(t) = - dPhi/dt

The local frequency at t = timeIndex*DeltaTime is computed from the phase using a central difference to approximate the derivative (for second order accuracy).

We wrap the phase difference numerator in doifference quatient) to be in the range [-pi,pi)

Local Frequency is in Hz = Cycles per second

References DeltaTime, GetPhase(), pi, qtPoints, sfftM, fftMatrices::tOptSignalX, TypeSimulation, VECTOR, and WrapPeriodically().

Referenced by WriteLocalFrequencyAndChirp().

void OptSignal::GetNewRandomSignalString ( void   ) 

Regenerates the signal using a new randomly chosen bit sequence.

References BitString::GetRandomString(), oBitString, and RegenerateSignalString().

double OptSignal::GetNoiseBandwidthGaussianStatistics ( void   )  [inline]
int OptSignal::GetNumChannels ( void   )  [inline]
double OptSignal::GetOptPowerChann ( void   )  [inline]
int OptSignal::GetQtPoints ( void   )  [inline]
void OptSignal::GetRandomJones ( cplx Jones  ) 

Generates a random Jones vector so that the corresponding Stokes vector is selected from a uniform distribution on the Poincare sphere

References RanNumGen::GetRanNum(), jc, pi, and RNG.

Referenced by MachZehnder::MZModulator(), MachZehnder::PhaseModulator(), SetRandomJonesVectors(), and TestGetRandomJones().

bool OptSignal::GetRandomPolarizationsFlag (  )  [inline]
double OptSignal::GetRealX ( double  Time  ) 

Returns real part of X-polarization of signal at time Time. We use linear interpolation of Time is not on the discrete time grid and interpret Time as being periodic in the range [0,TimeWindow).

References DeltaTime, GetCeilIndex(), GetFloorIndex(), sfftM, TimeWindow, and fftMatrices::tOptSignalX.

double OptSignal::GetRealY ( double  Time  ) 

Returns real part of Y-polarization of signal at time Time.

See also:
OptSignal::GetRealX()

References DeltaTime, GetCeilIndex(), GetFloorIndex(), sfftM, TimeWindow, and fftMatrices::tOptSignalY.

double OptSignal::GetRelativeCenterFrequency ( int  ChannelArrayIndex  ) 

Returns Freqeuncy of chanel with index ChannelArrayIndex relative to OptSignal::CenterFreq.

ChannelArrayIndex is asumed to be in range 0 to OptSignal::NumChanns-1.

References CenterFreq, and Frequency.

Referenced by NoiseCovariance::ApplyArtificialCentralChannelDemux(), and NoiseCovariance::Perturb().

int OptSignal::GetRelevantNumModesOFLE ( void   )  [inline]
double OptSignal::GetSigmaSqOptSignal ( void   ) 

Our of date. Use ComputeRMSPulseWidth() instead.

Computes square of pulse width, using same formula used to compute variance of a pdf. Assumes signal only has one pulse

See also:
OptSignal::ComputeRMSPulseWidth for Simpson's rule version

References DeltaTime, qtPoints, sfftM, sq(), fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, TypeSimulation, and VECTOR.

Referenced by WriteAveragePulseWidth(), and OptFiberLocalError::WriteStepSizes().

int OptSignal::GetStringLength ( void   )  [inline]
double OptSignal::GetTimeWindow ( void   )  [inline]
double OptSignal::GetTotalEnergy ( void   ) 
void OptSignal::GetTotalStokesParameters ( double *  Stokes  ) 
void OptSignal::GetTotalStokesParametersInBandwidth ( double *  Stokes,
double  RelMinFreq,
double  RelMaxFreq 
)
void OptSignal::GetTotalStokesParametersInTime ( double *  Stokes,
int  RelMinTimeIndex,
int  RelMaxTimeIndex 
)
typePulse OptSignal::GetTypePulse ( void   )  [inline]
typeSimulation OptSignal::GetTypeSimulation ( void   )  [inline]
bool OptSignal::GetUsingOptFiberLocalError ( void   )  [inline]
double OptSignal::GetWavelength ( int  ChannelArrayIndex  ) 
void OptSignal::ifftshift ( void   ) 

Has same effect as function of same name in Matlab.

References fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, cfftw::ifftshift(), sfftM, TypeSimulation, and VECTOR.

Referenced by ChangeAbsoluteCenterFreq(), and TimeShiftSignal().

void OptSignal::ImportOptSignal ( OptSignal oOptSignalOrig  ) 
void OptSignal::InitializeFirstOrderPMDSignal ( double  PowerSplit,
double  DGD 
)

Generates a signal using the first order PMD model for the Gaussian, Sech and NRZ formats

CAUTION: For NRZ this only works for a single channel signal

Parameters:
DGD,: The differential group delay in seconds
PowerSplit,: The power splitting parameter in range [0,1].

The X-polarization component of the signal is shifted right by DGD/2 and the Y-polarization component is shifted left by DGD/2. The two polarization components are combined so that a fraction PowerSplit of the power is in the X-polarization and a fraction 1-PowerSplit of the power is in the Y-polarization.

References AccumulatedTotalNoiseSpectralDensityGaussianStatistics, BitLength, CenterFreq, ChirpParameter, CRZ_GAUSS, DeltaTime, fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, FWHM_Pulse, BitString::GetBit(), GetFrequency(), jc, log(), NRZ, NumChannels, oBitString, optical_filter(), OptPowerChann, pi, qtPoints, RiseTime, RZ_GAUSS, RZ_SECH, sfftM, sq(), sqrt(), StringLength, Time2Freq(), TimeWindow, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, and TypePulse.

void OptSignal::InitializeInStokes ( ifstream *  InFile  ) 
void OptSignal::InputTimeDataFromFile ( void   ) 

Reads in time data from file when TypePulse == INPUT_SIGNAL_FROM_FILE.

References InputTimeDataFileName, ReadComplexFields(), ReadComplexFieldsX(), SCALAR, and TypeSimulation.

Referenced by RegenerateSignalString().

void OptSignal::OpenAccumulatedFirstOrderDispersionFile ( string  FileName  ) 
void OptSignal::OpenAveragePulseWidthFile ( string  FileName,
int  WriteFlag 
)
void OptSignal::OpenDegreeOfPolarizationFile ( string  InFileName,
bool  WriteDOPFlag 
)
OptSignal & OptSignal::operator- ( OptSignal Signal2  ) 

Takes difference of two signals.

First calls copy constructor to initialize parameters for returned signal, then initializes data of returned signal to be difference of data in this signal and Signal2

References fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, OptSignal(), qtPoints, sfftM, fftMatrices::tOptSignalX, and fftMatrices::tOptSignalY.

OptSignal & OptSignal::operator= ( OptSignal RHS_Signal  ) 

Assignment operator.

This assignment operator assumes that OptSignal::NumChannels, OptSignal::qtPoints, OptSignal::TimeWindow, OptSignal::StringLength are unchanged so that none of the dynamically allocated data arrays/classes changes size.

References AccumulatedFirstOrderDispersion, AccumulatedSecondOrderDispersion, AccumulatedTotalNoiseSpectralDensityGaussianStatistics, BitLength, BitRateChann, BPSK_MACH_ZEHNDER, BPSK_PHASE_MOD, CenterFreq, CenterWavelength, ChannSpacing, ChirpParameter, ComputeInputPDVectorFlagOFLE, ComputeRelevantNumModesOFLEFlag, CSRZ_MACH_ZEHNDER, DebugLevel, DeltaFreq, DeltaTime, EOM_ElecFilter_FreqFWHM, EOM_Phi_10_RelError, EOM_Phi_20_RelError, EOM_sfftPM, EOM_sfftPM1, EOM_sfftPM2, EOM_ShiftAmt, EOM_SinusoidalVertShift_RelError, EOM_SlopeFactor, EOM_SuperGaussExponent, EOM_V_pi_RelError, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, fftPowerMatrices::fPowerSignal, FreqForPDVectorOFLE, Frequency, FreqWindow, FWHM_Pulse, GetInJones(), GetInStokes(), InputPDVectorOFLE, LinearExtinctionRatio, LogFile, MemAllocated, NoiseBandwidthGaussianStatistics, NRZ_RCOS_MACH_ZEHNDER, NumChannels, oBitString, OptPowerChann, oReduOptSignal, OutputPDVectorOFLE, QPSK_CW, QPSK_DPMZ_PM_AM_RZ33, QPSK_DPMZ_PM_AM_RZ50, QPSK_DPMZ_PM_NRZ, QPSK_SEQ_PM_AM_RZ33, QPSK_SEQ_PM_AM_RZ50, QPSK_SEQ_PM_NRZ, qtPoints, RandomPolarizationsFlag, RelevantNumModesOFLE, RiseTime, RNG, RZ33_MACH_ZEHNDER, RZ50_MACH_ZEHNDER, SetInJones(), SetInStokes(), sfftM, StokesTransferMatrixTransposeOFLE, StringLength, TimeWindow, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, fftPowerMatrices::tPowerSignal, TypeEOMElecData, TypeEOMElecFilter, TypePulse, TypeSimulation, UsingOptFiberLocalError, and VECTOR.

double OptSignal::RaisedCosineForNRZ_RCOS_MZ ( double  Time  ) 
void OptSignal::ReadComplexFields ( string  InFileName  ) 
void OptSignal::ReadComplexFieldsX ( string  InFileName  ) 
void OptSignal::ReadFileComplexFieldsTimeAndFreq ( string  InFileName  ) 

Reads all complex fields to a file for quick restart.

Reads 8 columns of data from file with name InFileName: Real and Imaginery parts of X and Y polarizations for time and frequency data. Use with OptSignal::WriteFileComplexFieldsTimeAndFreq(string InFileName)

References fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, jc, qtPoints, sfftM, fftMatrices::tOptSignalX, and fftMatrices::tOptSignalY.

Referenced by OptSignal().

int OptSignal::ReadInStokes ( string  InStokesName,
int  ch,
ifstream *  InFile 
)

References SetInStokes().

Referenced by InitializeInStokes().

void OptSignal::ReduceToSingleChannel ( int  ChannelArrayIndex  ) 
void OptSignal::RegenerateSignalString ( void   ) 

Basic transmitter model. Regenerates the signal data.

References AccumulatedTotalNoiseSpectralDensityGaussianStatistics, BPSK_MACH_ZEHNDER, BPSK_PHASE_MOD, CRZ_GAUSS, CRZ_RCOS, CRZ_SIN_MZ, CSRZ_MACH_ZEHNDER, CW, GenerateSignalStringBPSKMachZehnderModulator(), GenerateSignalStringBPSKPhaseModulator(), GenerateSignalStringCSRZMachZehnderModulator(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringNRZ_RCOS_MachZehnderModulator(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ33(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ50(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZ33MachZehnderModulator(), GenerateSignalStringRZ50MachZehnderModulator(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), INPUT_SEQUENCE, INPUT_SIGNAL_FROM_FILE, InputTimeDataFromFile(), NRZ, NRZ_RCOS_MACH_ZEHNDER, oReduOptSignal, QPSK_CW, QPSK_DPMZ_PM_AM_RZ33, QPSK_DPMZ_PM_AM_RZ50, QPSK_DPMZ_PM_NRZ, QPSK_RZ_GAUSS, QPSK_SEQ_PM_AM_RZ33, QPSK_SEQ_PM_AM_RZ50, QPSK_SEQ_PM_NRZ, ReduOptSignal::RegenerateReduOptSignal(), ResetJonesMatrix(), ResetPDVectorOFLE(), RZ33_MACH_ZEHNDER, RZ50_MACH_ZEHNDER, RZ_GAUSS, RZ_GAUSS_PATTERN, RZ_SECH, SetRandomJonesVectors(), TypePulse, and UMBC_RZ.

Referenced by GetNewRandomSignalString(), OptSignal(), GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized(), RegenerateSignalWithGivenAveragePowerChann(), and SetBitRateChannBM().

void OptSignal::RegenerateSignalWithGivenAveragePowerChann ( double  AveragePowerChann2  ) 

Used in GaussianReceiver for computing the Q-factor.

References ChangeAveragePowerChannCurrentSignal(), and RegenerateSignalString().

void OptSignal::ResetAccumulatedFirstOrderDispersionToZero ( void   )  [inline]
void OptSignal::ResetAccumulatedSecondOrderDispersionToZero ( void   )  [inline]
void OptSignal::ResetJonesMatrix ( void   ) 

References JonesMatrixChannel, and NumChannels.

Referenced by RegenerateSignalString().

void OptSignal::ResetPDVectorOFLE ( void   ) 

Used by OptFiberLocalError class

Warning:
PMD in OptFiberLocalError class may not be debugged

Resets OutputPDVectorOFLE and InputPDVectorOFLE to (0,0,0) and StokesTransferMatrixTransposeOFLE to the 3x3 identity matrix.

References ComputeInputPDVectorFlagOFLE, InputPDVectorOFLE, OutputPDVectorOFLE, TypeSimulation, UsingOptFiberLocalError, and VECTOR.

Referenced by RegenerateSignalString().

void OptSignal::ScaleSignal ( double  ScaleFactor  ) 
void OptSignal::SetAccumulatedFirstOrderDispersion ( double  Value  )  [inline]
void OptSignal::SetAccumulatedSecondOrderDispersion ( double  Value  )  [inline]
void OptSignal::SetAccumulatedTotalNoiseSpectralDensityGaussianStatistics ( double  Value  )  [inline]
void OptSignal::SetBandwidthForRelevantNumModesOFLE ( double  BandwidthGHz  ) 
void OptSignal::SetBitLengthJZ ( double  Value  )  [inline]

USE WITH EXTREME CAUTION!! (Written for specific application by JZ).

void OptSignal::SetBitRateChannBM ( double  Value  ) 
void OptSignal::SetBitRateChannJZ ( double  Value  )  [inline]

USE WITH EXTREME CAUTION!! (Written for specific application by JZ).

void OptSignal::SetCenterFreq ( const double  CenterFreq2  )  [inline]
void OptSignal::SetChannSpacing ( const double  ChannSpacing2  )  [inline]
void OptSignal::SetEOM_ElecFilter_FreqFWHM ( double  Value  )  [inline]
void OptSignal::SetEOM_Phi_10_RelError ( double  EOM_Phi_10_RelError2  ) 

References EOM_Phi_10_RelError.

void OptSignal::SetEOM_Phi_20_RelError ( double  EOM_Phi_20_RelError2  ) 

References EOM_Phi_20_RelError.

void OptSignal::SetEOM_RiseTime ( double  Value  )  [inline]
void OptSignal::SetEOM_SinusoidalVertShift_RelError ( double  EOM_SinusoidalVertShift_RelError2  ) 
void OptSignal::SetEOM_V_pi_RelError ( double  EOM_V_pi_RelError2  ) 

References EOM_V_pi_RelError.

void OptSignal::SetExtinctionRatio ( double  Value  )  [inline]

References dB2Linear().

void OptSignal::SetFrequency ( int  ChannelArrayIndex,
double  Freq 
)
void OptSignal::SetFWHM_Pulse ( double  Value  )  [inline]
void OptSignal::SetInJones ( const int  ChannelArrayIndex,
const int  JonesIndex,
cplx  JonesValue 
)
void OptSignal::SetInJones ( const int  ChannelArrayIndex,
cplx JonesVector 
)

References InJones.

void OptSignal::SetInStokes ( const int  ChannelArrayIndex,
const int  StokesIndex,
double  StokesValue 
)
void OptSignal::SetInStokes ( const int  ChannelArrayIndex,
double *  StokesVector 
)

References InStokes.

void OptSignal::SetNoiseBandwidthGaussianStatistics ( double  Value  )  [inline]
void OptSignal::SetNumberChannelsForDemuxer ( int  NumChannels2  ) 
void OptSignal::SetNumChannels ( const int  NumChannels2  ) 
void OptSignal::SetOptPowerChannel ( const double  Power2  )  [inline]
void OptSignal::SetRandomJonesVectors ( void   ) 
void OptSignal::SetRiseTime ( double  Value  )  [inline]
void OptSignal::SetWriteAccumulatedFirstOrderDispersionFlag ( int  Value  )  [inline]
void OptSignal::SubtractFreqDomain ( OptSignal oOptSignal2  ) 

Subtracts frequency domain data in oOptSignal2 from this OptSignal and then calls OptSignal:Freq2Time()

References fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, Freq2Time(), GetQtPoints(), qtPoints, and sfftM.

void OptSignal::SwitchXandYPolarizations ( void   ) 
void OptSignal::TestGetRandomJones ( string  OutFileName,
int  NumberPoints 
)

References GetRandomJones(), and Jones2Stokes().

void OptSignal::Time2Freq ( void   ) 

Does Fourier transform of OptSignal data from Time to Frequency.

References cfftw::FFT(), fft, fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, sfftM, fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, TypeSimulation, and VECTOR.

Referenced by AddCWSignal(), ChangeAveragePowerChannCurrentSignal(), DampBounds(), EOM_MachZehnderModulatorElecNRZ(), EOM_MachZehnderModulatorOptData(), EOM_MachZehnderModulatorOptNRZOLD(), EOM_PhaseModulator(), FreqShiftSignal(), GenerateImpulseSignal(), GenerateSignalStringCSRZMachZehnderModulator(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringNRZ_RCOS_MachZehnderModulator(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ33(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ50(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosines(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZ33MachZehnderModulator(), GenerateSignalStringRZ50MachZehnderModulator(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), ElecSignalStat::GetIntegralForSignalNoiseVariance(), ElecSignalStat::GetStdDevSignal_ASE_TimeIndex(), InitializeFirstOrderPMDSignal(), PulseEvolutionAnalyzer::IsolatePulse(), MachZehnder::MZModulator(), OptSignal(), MachZehnder::PhaseModulator(), Polarizer::PolarizeOptSignal(), OptFiber::PropagateFiberCoupledNLS(), OptFiber::PropagateFullNonlinearFiberCoupledNLS(), ReadComplexFields(), ReadComplexFieldsX(), BeamSplitter::SplitOptSignal(), PolarizTransformer::TransformPolarization(), and PolarizTransformer::UndoLastPolarizTransformation().

void OptSignal::Time2FreqScalar ( void   ) 

Does Fourier transform of OptSignal data from Time to Frequency for SCALAR signal

References cfftw::FFT(), fft, fftMatrices::fOptSignalX, sfftM, fftMatrices::tOptSignalX, TypeSimulation, and VECTOR.

Referenced by BeamSplitter::SplitOptSignalScalar().

void OptSignal::TimeShiftSignal ( double  dTime  ) 

This method shifts the signal to the right by the amount dTime using the fft

References fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, Freq2Time(), ifftshift(), jc, pi, qtPoints, SCALAR, sfftM, TimeWindow, and TypeSimulation.

Referenced by ElecSignalStat::GetIntegralForSignalNoiseVariance().

template<class T >
T OptSignal::WrapPeriodically ( periodicVariable,
leftEndPoint,
rightEndPoint 
)

Returns the result of wrapping a periodic variable, periodicVariable, so that it is in the range [leftEndPoint,rightEndPoint).

Can use this template for example with T=double by calling as

double WrappedVar = WrapPeriodically<double>(Var,Min,Max);

Referenced by GetLocalFrequency(), and ElecSignalStat::UpdatePatternStats().

void OptSignal::WriteAccumulatedFirstOrderDispersion ( double  PropagatedLength  ) 
void OptSignal::WriteAveragePowerdBm ( string  OutFileName,
double  distance,
int  appendFlag 
)
See also:
OptSignal::GetAveragePower(), OptSignal::WriteDistTimePowerPhase()

double FreqEnergy = 0;

if(TypeSimulation == VECTOR) {

for (int ii = 0; ii < qtPoints; ii++) { FreqEnergy += sq(abs(sfftM.fOptSignalX[ii])) +sq(abs(sfftM.fOptSignalY[ii])); } } else { for (int ii = 0; ii < qtPoints; ii++) { FreqEnergy += sq(abs(sfftM.fOptSignalX[ii])); } }

cout << "Time domain Average Power [W]: " << Energy*DeltaTime/TimeWindow << " Freq domain Average Power [W]: " << FreqEnergy << endl << endl;

References Linear2dBm(), sq(), and VECTOR.

void OptSignal::WriteAveragePulseWidth ( double  PropagatedLength,
int  WriteFlag 
)
void OptSignal::WriteChirp ( string  outFile  ) 
void OptSignal::WriteComplexFields ( string  OutFileName,
int  ForRestartFlag 
)
void OptSignal::WriteComplexFieldsFreq ( string  OutFileName  ) 

Writes to a file: Complex fields real(fX), imag(fX), real(fY), imag(fY). Uses OptSignal::fftshift to put DC term in center

References DeltaFreq, fft, cfftw::fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, FreqWindow, cfftw::ifftshift(), qtPoints, and sfftM.

Referenced by NoiseCovariance::WriteFileNoiseFreeSignalAndCovarianceMatrix().

void OptSignal::WriteComplexFieldsX ( string  OutFileName,
int  ForRestartFlag 
)

Writes to a file: Complex fields real(tX), imag(tX).

References DeltaTime, qtPoints, sfftM, and fftMatrices::tOptSignalX.

void OptSignal::WriteDegreeOfPolarization ( double  PropLength,
double  RelMinFreq,
double  RelMaxFreq 
)
void OptSignal::WriteDistTimeCplxWave ( string  outFile,
double  distance,
int  appendFlag 
)

Writes out real and imaginary parts of SCALAR signal as function of distance and time

See also:
OptSignal::WriteDistTimePowerPhase()
Warning:
Does not work for VECTOR signals

References DeltaTime, jc, qtPoints, sfftM, fftMatrices::tOptSignalX, TypeSimulation, and VECTOR.

void OptSignal::WriteDistTimePower ( string  outFile,
int  timeIndexIncrement,
double  distance,
int  appendFlag 
)
void OptSignal::WriteDistTimePowerPhase ( string  outFile,
int  timeIndexIncrement,
double  distance,
int  appendFlag 
)

Writes to file with name outFile the power and phase of the optical signal as a function of propagation distance and time

For VECTOR signals the phase of both X and Y polarizations is output.

File format (column-wise): Distance [m], Time [s], OpticalPower [W], X-Phase (Y-Phase) [rad]

Method can be called at several distances. On first call set appendFlag = false, otherwsie set appendFlag = true

References DeltaTime, GetPhase(), qtPoints, sfftM, sq(), fftMatrices::tOptSignalX, fftMatrices::tOptSignalY, TypeSimulation, and VECTOR.

Referenced by OptDataWriter::WriteEndMap(), OptDataWriter::WriteInitialData(), and OptDataWriter::WriteWithinMap().

void OptSignal::WriteFileComplexFieldsTimeAndFreq ( string  OutFileName  ) 

Writes all complex fields to a file for quick restart.

Writes 8 columns of data to file with name OutFileName Real and Imaginery parts of X and Y polarizations for time and frequency data. Use with OptSignal::ReadFileComplexFieldsTimeAndFreq(string InFileName)

References fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, qtPoints, sfftM, fftMatrices::tOptSignalX, and fftMatrices::tOptSignalY.

void OptSignal::WriteFileFreqPower ( string  outFile,
int  TypeOutputFlag 
)

Writes wavelength data to a file according to the format specified by TypeOutputFlag. IL_Jun03

Writes frequency data to a file according to the format specified by TypeOutputFlag.

Parameters:
TypeOutputFlag,: 
  • 0: Power [W]. Keep central frequency
  • 1: Power Spectral Density [W/Hz]. Omit central frequency. Useful only for single channel case where carrier is central frequency
  • 2: Power Spectral Density [W/Hz]. Keep central frequency. In this case when you keep StringLength same but change qtPoints the DC and side-tones have same height and the background power that comes from the shape of a single pulse also has the same basic shape, though it looks noisy and this "noise" looks different because of different patterning in the bit strings. If you double StringLength then you double the height of the DC and side tones.
  • 3: Option 2 with 12 digits of accuracy

This method is backward compatible with void OptSignal::WriteFileFreqPower(string outFile,int OmitDCFlag) which just did cases 0 and 1 for TypeOutputFlag.

See also:
void OptSignal::WriteAveragePowerdBm(string,double,int) which has code you can uncomment for a check of Parseval's relation and to see that we have the units correct here.

JZAug02

References DeltaFreq, fft, cfftw::fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, FreqWindow, cfftw::ifftshift(), qtPoints, sfftM, sq(), TypeSimulation, and VECTOR.

void OptSignal::WriteFileFreqPower ( string  outFile  ) 
void OptSignal::WriteFileFreqPowerdBm ( string  OutFileName  ) 

Outputs power spectral density [W/Hz] in dBm to a file See FFTandNLSConventions.pdf for definition

References DeltaFreq, fft, cfftw::fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, FreqWindow, cfftw::ifftshift(), Linear2dBm(), qtPoints, sfftM, sq(), TypeSimulation, and VECTOR.

void OptSignal::WriteFileTimeAmpPhase ( string  outFile  ) 

Writes amplitude and phase of SCALAR complex wave in time domain to a file

References DeltaTime, GetPhase(), qtPoints, sfftM, fftMatrices::tOptSignalX, TypeSimulation, and VECTOR.

void OptSignal::WriteFileTimePower ( string  outFile  ) 
void OptSignal::WriteFileWavelengthPower ( string  outFile  ) 

Writes frequency data to a file according to the format specified by TypeOutputFlag. JZAug02

References CenterFreq, DeltaFreq, fft, cfftw::fftshift(), fftMatrices::fOptSignalX, fftMatrices::fOptSignalY, Frequency2Wavelength(), FreqWindow, cfftw::ifftshift(), qtPoints, sfftM, sq(), TypeSimulation, and VECTOR.

void OptSignal::WriteFreqPhaseX ( string  OutFileName  ) 

Write Phase of X polarization versus Frequency to a file. Uses OptSignal::fftshift to put DC term in center

References DeltaFreq, fft, cfftw::fftshift(), fftMatrices::fOptSignalX, FreqWindow, GetPhase(), cfftw::ifftshift(), qtPoints, and sfftM.

void OptSignal::WriteLocalFrequencyAndChirp ( string  outFile  ) 
void OptSignal::WritePowerdBmChannel ( string  OutFileName,
double  distance,
int  appendFlag,
int  ChannelArrayIndex 
)
void OptSignal::WritePowerdBmFreqWindow ( string  OutFileName,
double  distance,
int  appendFlag,
double  LeftFreq,
double  RightFreq 
)
const char * OptSignal::WriteTypePulse ( void   ) 

Friends And Related Function Documentation

void AddSignals ( OptSignal Signal1,
OptSignal Signal2,
OptSignal Signal3 
) [friend]

Addition operator: Signal3 = Signal1 + Signal2.

Adds data as well as adding BitStrings using method OptSignal::AddBitStrings()

Warning:
This method assumes that OptSignal::OptSignal(OptSignal & Signal1,OptSignal & Signal2, RanNumGen *RNG3) has been previously called

Member Data Documentation

AccumulatedFirstOrderDispersion is integral of beta'' in units s^2. It is measured at the central frequency. It's value is updated by the OptFiberLocalError or OptFiber class after each z-step is taken by the NLS solver. This works out fine as the Signal is passed to each optical fiber. There are methods in the Signal class to reset to zero and to write out the parameter to a file as a function of z. CAUTION: At the moment the updates are are being done by the OptFiberLocalError class not the OptFiber class. Feel free to write the code for OptFiber if you like! (JZ, Feb 8th, 2001)

AccumulatedSecondOrderDispersion is integral of beta''' in units s^3.

Referenced by ConstructOptSignal(), operator=(), OptSignal(), and WriteAccumulatedFirstOrderDispersion().

Required when using the semi-analytical noise transmission and receiver model (JZ, Dec 19, 2002)

When using the semi-analytical noise transmission and receiver model we need to keep track of the TotalNoiseSpectralDensity in W/Hz, which is automatically updated by each OptAmplifier, OptFiberLocalError, and LumpedLoss object. (Note that I haven't implemented this for the OptFiber class.) For simplicity for now we assume that the noise is unpolarized and so we have not worried about keeping track of the polarization states of the noise and how they are affected by polarization sensitive devices and fibers.

Note that

TotalNoiseSpectralDensity = 2*NoiseSpectralDensityPerPolarization.

A major reason for keeping track of TotalNoiseSpectralDensity is to ensure that the VECTOR_SATURATED and VECTOR_FIXED_TOTAL_OUTPUT_POWER amplifiers work correctly.

If we want to model partially polarized noise it would be better to link the reduced model directly to the full model.

Referenced by ConstructOptSignal(), InitializeFirstOrderPMDSignal(), operator=(), OptSignal(), RegenerateSignalString(), and SetBitRateChannBM().

double OptSignal::BitLength [private]
double OptSignal::BitRateChann [private]
double OptSignal::CenterFreq [private]
double OptSignal::CenterWavelength [private]
double OptSignal::ChannSpacing [private]
double OptSignal::ChirpParameter [private]

Input parameter that specifies whether or not to compute the input polarization dispersion vector using the method OptFiberLocalError::GetInputPDVector. Default value is 0.

Referenced by ConstructOptSignal(), operator=(), OptSignal(), and ResetPDVectorOFLE().

Flag to compute RelevantNumModesOFLE

See also:
int RelevantNumModesOFLE

Referenced by ComputeRelevantNumModesOFLE(), ConstructOptSignal(), operator=(), and OptSignal().

int OptSignal::DebugLevel [private]
double OptSignal::DeltaFreq [private]
double OptSignal::DeltaTime [private]

Referenced by AddCWSignal(), ComputeAverageChirpOfMarks(), ComputeFWHMPulsePower(), ComputeMeanPhasePulse(), ComputeMeanTimePulse(), ComputeRMSPulseWidth(), ComputeSigmaSqTimeWindow(), ConstructOptSignal(), DampBounds(), EOM_GenerateRaisedCosineBinaryElecData(), EOM_GenerateSmoothedRectBinaryElecDataArctanh(), EOM_GenerateSmoothedRectBinaryElecDataSuperGauss(), EOM_MachZehnderModulatorElecNRZ(), EOM_MachZehnderModulatorOptData(), EOM_MachZehnderModulatorOptNRZOLD(), EOM_PhaseModulator(), EOM_SinusoidallyModulateElecData(), EOM_WriteFileElecData(), GenerateSignalStringCSRZMachZehnderModulator(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringNRZ_RCOS_MachZehnderModulator(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ33(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ50(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosines(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZ33MachZehnderModulator(), GenerateSignalStringRZ50MachZehnderModulator(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), GetAutocorrelationFunctionOptSignalX(), GetCeilIndex(), GetChirp(), GetEnergyInBitSlot(), GetEnergyInTimeRange(), GetFloorIndex(), GetImagX(), GetImagY(), GetLocalFrequency(), GetRealX(), GetRealY(), GetSigmaSqOptSignal(), InitializeFirstOrderPMDSignal(), operator=(), OptSignal(), SetBitRateChannBM(), WriteChirp(), WriteComplexFields(), WriteComplexFieldsX(), WriteDistTimeCplxWave(), WriteDistTimePower(), WriteDistTimePowerPhase(), WriteFileTimeAmpPhase(), WriteFileTimePower(), and WriteLocalFrequencyAndChirp().

double OptSignal::EOM_RiseTime [private]

Referenced by ConstructOptSignal().

double OptSignal::EOM_ShiftAmt [private]
double OptSignal::EOM_SlopeFactor [private]
double OptSignal::EOM_V_pi_RelError [private]

Referenced by PostDispCompSubSystem::AdditionalDemuxFiltering(), ComputeMeanFreqSignal(), ComputeRMSSpectralWidth(), ChiSquareReceiver::ComputeTimeIndependentPartOfFilterMatrix(), ConstructOptSignal(), EOM_ElectricalFilterBessel4(), EOM_ElectricalFilterGaussian(), EOM_FilterElecData(), EOM_GeneratePerfectRectBinaryElecData(), EOM_GenerateRaisedCosineBinaryElecData(), EOM_GenerateSmoothedRectBinaryElecDataArctanh(), EOM_GenerateSmoothedRectBinaryElecDataSuperGauss(), EOM_SinusoidallyModulateElecData(), OptDemuxer::ExtractChannel(), OptDemuxer::ExtractChannelCenterFreq(), OptDemuxer::ExtractSingleChannel(), fftshift(), Freq2Time(), Freq2TimeScalar(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), GetAveragePowerFreqDomainInsideChannel(), GetAveragePowerFreqDomainInsideChannels(), GetDegreeOfPolarization(), GetTotalStokesParametersInBandwidth(), ifftshift(), ElecSignalStat::InitElecSignalStat(), InitializeFirstOrderPMDSignal(), MachZehnder::MachZehnder(), NoiseCovariance::NoiseCovariance(), OptAmplifier::OptAmplifier(), OptFiber::OptFiber(), OptFiberLocalError::OptFiberLocalError(), OptFilter::OptFilter(), OptSignal(), OptSpectrumAnalyzer::OptSpectrumAnalyzer(), RamanAmp::RamanAmp(), SaturableAbsorber::SaturableAbsorber(), SetBitRateChannBM(), Photodetector::SetOptSignal(), OptSpectrumAnalyzer::SwitchOptSignalData(), OptFilter::SwitchOptSignalData(), OptFiber::SwitchOptSignalData(), OptAmplifier::SwitchOptSignalData(), Time2Freq(), Time2FreqScalar(), WriteComplexFieldsFreq(), WriteFileFreqPower(), WriteFileFreqPowerdBm(), WriteFileWavelengthPower(), WriteFreqPhaseX(), RamanAmp::WriteSignalNoise(), and ~OptSignal().

For OptFiberLocalError we keep track of the Polarization dispersion vector at the frequency given by FreqForPDVectorOFLE.

This frequency is an absolute frequency

FreqForPDVectorOFLE = RelFreqForPDVector + CenterFreq, where

OptSignal::RelFreqForPDVector is an optional input parameter whose default value is 0.

Referenced by ConstructOptSignal(), operator=(), and OptSignal().

double* OptSignal::Frequency [private]
double OptSignal::FreqWindow [private]
double OptSignal::FWHM_Pulse [private]

Pointer to a 1D array of length NumChannels*2 which stores the Jones parameters for each channel. Accessed using the methods OptSignal::SetInJones(), OptSignal::GetInJones()

Referenced by ConstructOptSignal(), GetInJones(), OptSignal(), SetInJones(), and ~OptSignal().

Input polarization dispersion vector used in the class OptFiberLocalError

Referenced by ConstructOptSignal(), operator=(), OptSignal(), and ResetPDVectorOFLE().

See also:
OptSignal::TypePulse (general)

Referenced by ConstructOptSignal(), and InputTimeDataFromFile().

double* OptSignal::InStokes [private]

Pointer to a 1D array of length NumChannels*4 which stores the Stokes parameters for each channel. Accessed using the methods OptSignal::SetInStokes(), OptSignal::GetInStokes()

Referenced by ConstructOptSignal(), GetInStokes(), OptSignal(), SetInStokes(), and ~OptSignal().

int OptSignal::MemAllocated [private]

The bandwidth of the noise as used in the semi-analytical noise transmission and receiver model (in Hz)

Referenced by ConstructOptSignal(), operator=(), and OptSignal().

int OptSignal::NumChannels [private]

A BitString object.

Referenced by AddSignalBM(), AddSignals(), ComputeAverageChirpOfMarks(), ElecSignalStat::ComputeAveragePDFs(), GaussianReceiver::ComputeAveragePDFs(), ChiSquareReceiver::ComputeAveragePDFs(), ComputeAverageSigmaMarks(), ChiSquareReceiver::ComputeGaussianPDFsAndBER(), ConstructOptSignal(), EOM_GeneratePerfectRectBinaryElecData(), EOM_GenerateRaisedCosineBinaryElecData(), EOM_GenerateSmoothedRectBinaryElecDataArctanh(), EOM_GenerateSmoothedRectBinaryElecDataSuperGauss(), OptDemuxer::ExtractChannel(), OptDemuxer::ExtractChannelCenterFreq(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosines(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), ElecSignalStat::GetBit(), ElecSignalStat::GetBitFromString(), GetChannelArrayIndex(), GetChannelPhysicalIndex(), ElecSignalStat::GetMeanCurrentIsolatedBit0(), ElecSignalStat::GetMeanCurrentIsolatedBit1(), GetNewRandomSignalString(), ElecSignalStat::GetTargetIndexTimeBestMinEyeOpening(), ElecSignalStat::GetTargetIndexTimeBestQ_Factor(), ImportOptSignal(), ElecSignalStat::InitElecSignalStat(), InitializeFirstOrderPMDSignal(), MachZehnder::MachZehnder(), operator=(), OptSignal(), PolarizBeamSplitter::PolarizSplitOptSignal(), OptDemuxer::PrepareToDemuxChannel(), PulseEvolutionAnalyzer::PulseEvolutionAnalyzer(), ReduceToSingleChannel(), SetNumberChannelsForDemuxer(), SetNumChannels(), BeamSplitter::SplitOptSignalScalar(), ElecSignalStat::UpdateEqualizedPerformanceStatistics(), ElecSignalStat::UpdateMoments(), ElecSignalStat::UpdatePatternStats(), ElecSignalStat::UpdatePerformanceStatistics(), and ~OptSignal().

double OptSignal::OptPowerChann [private]

Output polarization dispersion vector used in the class OptFiberLocalError

For OptFiberLocalError class we keep track of the Polarization dispersion vector at the frequency given by FreqForPDVectorOFLE. OutputPDVectorOFLE and InputPDVectorOFLE are initialized to 0 when we Regenerate the signal, assuming DGD = 0 then. (JZ, Jan 25th 2002)

Referenced by ConstructOptSignal(), operator=(), OptFiberLocalError::OptFiberLocalError(), OptSignal(), and ResetPDVectorOFLE().

int OptSignal::qtPoints [private]

Referenced by AddCWSignal(), AddFreqDomain(), AddSignalBM(), AddSignals(), AllocateOptFiberLocalErrorWorkSpace(), ChangeAbsoluteCenterFreq(), ChangeAveragePowerChannCurrentSignal(), ComputeAverageChirpOfMarks(), ComputeFWHMPulsePower(), ComputeMaxPower(), ComputeMeanFreqSignal(), ComputeMeanPhasePulse(), ComputeMeanTimePulse(), ComputeRelevantNumModesOFLE(), ComputeRMSPulseWidth(), ComputeRMSSpectralWidth(), ComputeSigmaSqTimeWindow(), ConstantPhaseShift(), ConstructOptSignal(), DampBounds(), EliminateX_Polarization(), EliminateY_Polarization(), EOM_GeneratePerfectRectBinaryElecData(), EOM_GenerateRaisedCosineBinaryElecData(), EOM_GenerateSmoothedRectBinaryElecDataArctanh(), EOM_GenerateSmoothedRectBinaryElecDataSuperGauss(), EOM_MachZehnderModulatorElecNRZ(), EOM_MachZehnderModulatorOptData(), EOM_MachZehnderModulatorOptNRZOLD(), EOM_PhaseModulator(), EOM_SinusoidallyModulateElecData(), EOM_WriteFileElecData(), FreqShiftSignal(), GenerateImpulseSignal(), GenerateSignalStringCSRZMachZehnderModulator(), GenerateSignalStringCSRZMachZehnderModulatorOLD(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringNRZ_RCOS_MachZehnderModulator(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ33(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ50(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosines(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZ33MachZehnderModulator(), GenerateSignalStringRZ33MachZehnderModulatorOLD(), GenerateSignalStringRZ50MachZehnderModulator(), GenerateSignalStringRZ50MachZehnderModulatorOLD(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), GetAutocorrelationFunctionOptSignalX(), GetAveragePowerFreqDomain(), GetAveragePowerFreqDomainInsideChannel(), GetAveragePowerFreqDomainInsideChannels(), GetCeilIndex(), GetChirp(), GetDegreeOfPolarization(), GetEnergyInTimeRange(), GetLocalFrequency(), GetSigmaSqOptSignal(), GetTotalStokesParameters(), GetTotalStokesParametersInBandwidth(), GetTotalStokesParametersInTime(), ImportOptSignal(), InitializeFirstOrderPMDSignal(), operator-(), operator=(), OptSignal(), ReadComplexFields(), ReadComplexFieldsX(), ReadFileComplexFieldsTimeAndFreq(), ScaleSignal(), SetBandwidthForRelevantNumModesOFLE(), SetBitRateChannBM(), SubtractFreqDomain(), SwitchXandYPolarizations(), TimeShiftSignal(), WriteChirp(), WriteComplexFields(), WriteComplexFieldsFreq(), WriteComplexFieldsX(), WriteDistTimeCplxWave(), WriteDistTimePower(), WriteDistTimePowerPhase(), WriteFileComplexFieldsTimeAndFreq(), WriteFileFreqPower(), WriteFileFreqPowerdBm(), WriteFileTimeAmpPhase(), WriteFileTimePower(), WriteFileWavelengthPower(), WriteFreqPhaseX(), and WriteLocalFrequencyAndChirp().

Work space used for calculation of integrals using the Quadrature method in ocsTools.hh

Referenced by ComputeMeanFreqSignal(), ComputeMeanPhasePulse(), ComputeMeanTimePulse(), ComputeRMSPulseWidth(), ConstructOptSignal(), GetEnergyInTimeRange(), OptSignal(), and ~OptSignal().

Randomize input polarization states for different channels and different Monte Carlo runs

Referenced by ConstructOptSignal(), operator=(), OptSignal(), and SetRandomJonesVectors().

The number of modes used to compute the Local Error in the OptFiberLocalError class. Default value if qtPoints.

Referenced by ComputeRelevantNumModesOFLE(), operator=(), OptSignal(), and SetBandwidthForRelevantNumModesOFLE().

double OptSignal::RiseTime [private]

Referenced by AddCWSignal(), AddFreqDomain(), PostDispCompSubSystem::AdditionalDemuxFiltering(), AddSignalBM(), AddSignals(), OptAmplifier::AmplifyAlternateOptSignalWithoutNoiseWithPrevioslyComputedGain(), ChangeAbsoluteCenterFreq(), ChangeAveragePowerChannCurrentSignal(), OptSpectrumAnalyzer::ComputeAveragePowerFreqWindow(), ComputeFWHMPulsePower(), ComputeMaxPower(), ComputeMeanFreqSignal(), ComputeMeanPhasePulse(), ComputeMeanTimePulse(), ComputeRMSPulseWidth(), ComputeRMSSpectralWidth(), ComputeSigmaSqTimeWindow(), ChiSquareReceiver::ComputeTimeIndependentPartOfFilterMatrix(), ConstantPhaseShift(), ConstructOptSignal(), DampBounds(), EliminateX_Polarization(), EliminateY_Polarization(), EOM_MachZehnderModulatorElecNRZ(), EOM_MachZehnderModulatorOptData(), EOM_MachZehnderModulatorOptNRZOLD(), EOM_PhaseModulator(), OptDemuxer::ExtractChannel(), OptDemuxer::ExtractChannelCenterFreq(), OptDemuxer::ExtractSingleChannel(), fftshift(), Freq2Time(), Freq2TimeScalar(), FreqShiftSignal(), Photodetector::GenerateImpulseCurrent(), GenerateImpulseSignal(), GenerateSignalStringCSRZMachZehnderModulator(), GenerateSignalStringCSRZMachZehnderModulatorOLD(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringNRZ_RCOS_MachZehnderModulator(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ33(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ50(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosines(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZ33MachZehnderModulator(), GenerateSignalStringRZ33MachZehnderModulatorOLD(), GenerateSignalStringRZ50MachZehnderModulator(), GenerateSignalStringRZ50MachZehnderModulatorOLD(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), GetAutocorrelationFunctionOptSignalX(), GetAveragePowerFreqDomain(), GetAveragePowerFreqDomainInsideChannel(), GetAveragePowerFreqDomainInsideChannels(), GetChirp(), GetDegreeOfPolarization(), GetEnergyInTimeRange(), GetImagX(), GetImagY(), ElecSignalStat::GetIntegralForNoiseNoiseVarianceGaussianStatistics(), ElecSignalStat::GetIntegralForSignalNoiseVariance(), GetLocalFrequency(), ElecSignalStat::GetMeanASE_ASE(), ElecSignalStat::GetMeanNoiseGaussianStatistics(), OptFilter::GetPowerEquivalentSpectralWidth(), GetRealX(), GetRealY(), GetSigmaSqOptSignal(), ElecSignalStat::GetStdDevASE_ASE(), ElecSignalStat::GetStdDevSignal_ASE_TimeIndex(), GetTotalStokesParameters(), GetTotalStokesParametersInBandwidth(), GetTotalStokesParametersInTime(), ifftshift(), ImportOptSignal(), InitializeFirstOrderPMDSignal(), LumpedLoss::InitLumpedLoss(), PulseEvolutionAnalyzer::IsolatePulse(), MachZehnder::MachZehnder(), NoiseCovariance::NoiseCovariance(), operator-(), operator=(), OptAmplifier::OptAmplifier(), OptFiber::OptFiber(), OptFiberLocalError::OptFiberLocalError(), OptFilter::OptFilter(), OptSignal(), Polarizer::PolarizeOptSignal(), PolarizBeamSplitter::PolarizSplitOptSignal(), PolDepAttenuator::PolDepAttenuate(), RamanAmp::PropagateNoise(), RamanAmp::PropagateSignalandNoise(), OptAmplifier::PropagateSignalandNoise(), RamanAmp::RamanAmp(), ReadComplexFields(), ReadComplexFieldsX(), ReadFileComplexFieldsTimeAndFreq(), SaturableAbsorber::SaturableAbsorber(), ScaleSignal(), SetBitRateChannBM(), Photodetector::SetOptSignal(), BeamSplitter::SplitOptSignal(), BeamSplitter::SplitOptSignalScalar(), SubtractFreqDomain(), OptFilter::SwitchOptSignalData(), OptFiber::SwitchOptSignalData(), OptAmplifier::SwitchOptSignalData(), LumpedLoss::SwitchOptSignalData(), SwitchXandYPolarizations(), Time2Freq(), Time2FreqScalar(), TimeShiftSignal(), PolarizTransformer::TransformPolarization(), PolarizTransformer::UndoLastPolarizTransformation(), OptSpectrumAnalyzer::UpdateOSA(), OptSpectrumAnalyzer::UpdateOSA_OLD(), WriteComplexFields(), WriteComplexFieldsFreq(), WriteComplexFieldsX(), WriteDistTimeCplxWave(), WriteDistTimePower(), WriteDistTimePowerPhase(), WriteFileComplexFieldsTimeAndFreq(), WriteFileFreqPower(), WriteFileFreqPowerdBm(), WriteFileTimeAmpPhase(), WriteFileTimePower(), WriteFileWavelengthPower(), WriteFreqPhaseX(), WriteLocalFrequencyAndChirp(), ReceiverSemiAnalytical::WriteNoiseFreeOpticalSignalFreq(), RamanAmp::WriteSignalNoise(), and ~OptSignal().

The transpose of the 3x3 Stokes transfer matrix used in the class OptFiberLocalError

Only used if OptSignal::ComputeInputPDVectorFlagOFLE = true

Used to compute InputPDVectorOFLE from OutputPDVectorOFLE using the equation

InputPDVectorOFLE = StokesTransferMatrixTransposeOFLE*OutputPDVectorOFLE

For fiber with transfer matrix StokesTransferMatrix, the output Stokes vector s_out is related to the input Stokes vector s_in by

s_out = StokesTransferMatrix s_in.

With just PMD (no PDL, PDG), the inverse of StokesTransferMatrix is given by its transpose.

We store the transpose because it enables us to easily rotate its column vectors in OptFiberLocalError::PropagateStokesTransferMatrix.

Referenced by ConstructOptSignal(), operator=(), and OptSignal().

int OptSignal::StringLength [private]
double OptSignal::TimeWindow [private]

Referenced by AllocateOptFiberLocalErrorWorkSpace(), ChangeAveragePowerChannCurrentSignal(), ComputeMaxPower(), ComputeMeanFreqSignal(), ComputeMeanPhasePulse(), ComputeMeanTimePulse(), ComputeRMSPulseWidth(), ComputeRMSSpectralWidth(), ComputeSigmaSqTimeWindow(), ConstantPhaseShift(), ConstructOptSignal(), DeallocateOptFiberLocalErrorWorkSpace(), EOM_MachZehnderModulatorElecNRZ(), EOM_MachZehnderModulatorOptData(), EOM_MachZehnderModulatorOptNRZOLD(), EOM_PhaseModulator(), fftshift(), Freq2Time(), Freq2TimeScalar(), FreqShiftSignal(), GenerateImpulseSignal(), GenerateSignalStringCSRZMachZehnderModulator(), GenerateSignalStringGaussianOrSech(), GenerateSignalStringGaussianOrSechWithPhaseShift(), GenerateSignalStringNRZ_RCOS_MachZehnderModulator(), GenerateSignalStringQPSK_CW(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ33(), GenerateSignalStringQPSK_DPMZ_PM_AM_RZ50(), GenerateSignalStringQPSK_DPMZ_PM_NRZ(), GenerateSignalStringQPSK_Gaussian(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ33(), GenerateSignalStringQPSK_SEQ_PM_AM_RZ50(), GenerateSignalStringQPSK_SEQ_PM_NRZ(), GenerateSignalStringRaisedCosines(), GenerateSignalStringRaisedCosinesWithPhaseShift(), GenerateSignalStringRZ33MachZehnderModulator(), GenerateSignalStringRZ50MachZehnderModulator(), GenerateSignalStringRZGaussianPattern(), GenerateSignalStringUsingInputSequence(), GetAveragePowerFreqDomain(), GetAveragePowerFreqDomainInsideChannels(), GetChirp(), GetEnergyInTimeRange(), GetLocalFrequency(), GetSigmaSqOptSignal(), ifftshift(), InitializeInStokes(), InputTimeDataFromFile(), operator=(), OptSignal(), ResetPDVectorOFLE(), SetRandomJonesVectors(), Time2Freq(), Time2FreqScalar(), TimeShiftSignal(), WriteDistTimeCplxWave(), WriteDistTimePower(), WriteDistTimePowerPhase(), WriteFileFreqPower(), WriteFileFreqPowerdBm(), WriteFileTimeAmpPhase(), WriteFileTimePower(), WriteFileWavelengthPower(), and WriteLocalFrequencyAndChirp().


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