Public Member Functions | Private Attributes

ReduPolDepAttenuator Class Reference

#include <ocsReduPolDepAttenuator.hh>

List of all members.

Public Member Functions

 ReduPolDepAttenuator ()
 Default constructor.
 ReduPolDepAttenuator (ReduOptSignal *oReduOptSignalTmp)
 Constructor.
 ReduPolDepAttenuator (ReduOptSignal *oReduOptSignalTmp, double PolDepAttenuationXTmp, double PolDepAttenuationYTmp)
 Constructor.
void InitPolDepAttenuator (ReduOptSignal *oReduOptSignalTmp)
 Initializes the parameters. Called by the constructors.
void SetPolDepAttenuation (double PolDepAttenuationXTmp, double PolDepAttenuationYTmp)
 Sets the amount of PDL in the X and Y directions in Jones space.
void SetPolDepAttenuationX (double PolDepAttenuationXTmp)
 Sets the PDL in the X direction.
void SetPolDepAttenuationY (double PolDepAttenuationYTmp)
 Sets the PDL in the Y direction.
double GetPolDepAttenuationPowerX (void)
double GetPolDepAttenuationPowerY (void)
double GetLinearPolDepAttenuationPowerX (void)
double GetLinearPolDepAttenuationPowerY (void)
void GetTransmMatrixCoefficients (void)
void SyncNumChannels (void)
void PolDepAttenuate (void)
 Transmits the Reduced Signal through the PDL element.

Private Attributes

int ObjectInitialized
ReduOptSignaloReduOptSignal
double NumChannels
 The number of channels of oReduOptSignal.
double LinearPolDepAttenuationX
double LinearPolDepAttenuationY
 in the Y dircetion in Jones space
double Tm00
double Tm01
double Tm22

Detailed Description

The reduced polarization dependent attenuator.
Models a polarization-dependent loss (PDL) element.

In the reduced model the action of a PDL element on the Stokes parameters of the signal and of the noise is given by Equation (6) of Wang and Menyuk, JLT Vol 19, Num4, April 2001 [WM 2001].
The action of a PDL element on the additional unpolarized noise is given by setting (S_1, S_2, S_3) = (0,0,0) in Equation (6) of [WM 2001].

For a simple application we call the constructor

ReduPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp ,double PolDepAttenuationXTmp ,double PolDepAttenuationYTmp)

where we usually set PolDepAttenuationX = 0.0 and
PolDepAttenuationY = The amount of PDL in dB.
This is as in [WM 2001, Eq 5].

Then we call the method

void PolDepAttenuate(void)

which passes the signal through the PDL element.


Constructor & Destructor Documentation

ReduPolDepAttenuator::ReduPolDepAttenuator (  )  [inline]

Default constructor.

Doesn't do anything!

References ObjectInitialized.

ReduPolDepAttenuator::ReduPolDepAttenuator ( ReduOptSignal oReduOptSignalTmp  ) 

Constructor.

Parameters:
oReduOptSignalTmp,: An object in the reduced optical signal class

We need to pass a ReduOptSignal because the PDL element acts on the Stokes parameters of the signal and noise in each channel and on the additional unpolarized noise all of which are data members in ReduOptSignal.

This constructor calls
InitPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp)

See also:
void InitPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp),
ReduPolDepAttenuator(ReduOptSignal *, double ,double)
ReduPolDepAttenuator::ReduPolDepAttenuator ( ReduOptSignal oReduOptSignalTmp,
double  PolDepAttenuationXTmp,
double  PolDepAttenuationYTmp 
)

Constructor.

Parameters:
oReduOptSignalTmp,: An object in the reduced optical signal class

We need to pass a ReduOptSignal because the PDL element acts on the Stokes parameters of the signal and noise in each channel and on the additional unpolarized noise all of which are data members in ReduOptSignal.

This constructor calls the two functions:
InitPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp)
SetPolDepAttenuation(double,double)

See also:
void InitPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp),
ReduPolDepAttenuator(ReduOptSignal *, double, double)

References InitPolDepAttenuator(), and SetPolDepAttenuation().


Member Function Documentation

double ReduPolDepAttenuator::GetLinearPolDepAttenuationPowerX ( void   )  [inline]

Returns the amount of loss of power due to PDL in the X direction on linear scale.

References LinearPolDepAttenuationX, and sq().

double ReduPolDepAttenuator::GetLinearPolDepAttenuationPowerY ( void   )  [inline]

Returns the amount of loss of power due to PDL in the Y direction on linear scale.

References LinearPolDepAttenuationY, and sq().

double ReduPolDepAttenuator::GetPolDepAttenuationPowerX ( void   )  [inline]

Returns the amount of loss of power due to PDL in the X direction on log scale.

References Linear2dB(), LinearPolDepAttenuationX, and sq().

double ReduPolDepAttenuator::GetPolDepAttenuationPowerY ( void   )  [inline]

Returns the amount of loss of power due to PDL in the Y direction on log scale.

References Linear2dB(), LinearPolDepAttenuationY, and sq().

void ReduPolDepAttenuator::GetTransmMatrixCoefficients ( void   ) 

Initializes the non-zero coefficients of the 4 by 4 PDL transmission matrix that acts on the 4 Stokes parameters.

The PDL is initialized in Jones space by SetPolDepAttenuation but it acts by matrix multiplication on the Stokes parameters of the signal and noise. This method initializes the non-zero entries of the matrix as in [WM 2001] Eq (6).

The method is called by
void SetPolDepAttenuation(double,double)

See also:
Tm00 Tm01 Tm22

References LinearPolDepAttenuationX, LinearPolDepAttenuationY, sq(), Tm00, Tm01, and Tm22.

Referenced by SetPolDepAttenuationX(), and SetPolDepAttenuationY().

void ReduPolDepAttenuator::InitPolDepAttenuator ( ReduOptSignal oReduOptSignalTmp  ) 

Initializes the parameters. Called by the constructors.

Initializes the class variables oReduOptSignal, NumChannels, and sets ObjectInitialized = 0, since the amount of PDL still needs to be set.

See also:
oReduOptSignal, NumChannels, ObjectInitialized
ReduPolDepAttenuator(ReduOptSignal *,double,double)
ReduPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp)

References ReduOptSignal::GetNumChannels().

Referenced by ReduPolDepAttenuator().

void ReduPolDepAttenuator::PolDepAttenuate ( void   ) 

Transmits the Reduced Signal through the PDL element.

The action of a PDL element on the Stokes parameters of the signal and of the noise is given by Equation (6) of Wang and Menyuk, JLT Vol 19, Num4, April 2001 [WM 2001].
The action of a PDL element on the additional unpolarized noise is given by setting (S_1, S_2, S_3) = (0,0,0) in Equation (6) of [WM 2001].

References NumChannels, ObjectInitialized, oReduOptSignal, ReduOptSignal::StokesNoise, ReduOptSignal::StokesSignal, Tm00, Tm01, and Tm22.

Referenced by ReduOptAmplifier::AddPolDepGainEffect(), and PolDepAttenuator::PolDepAttenuate().

void ReduPolDepAttenuator::SetPolDepAttenuation ( double  PolDepAttenuationXTmp,
double  PolDepAttenuationYTmp 
)

Sets the amount of PDL in the X and Y directions in Jones space.

We usually set

Parameters:
PolDepAttenuationX = 0.0 dB (no loss in the X direction)
PolDepAttenuationY = Amount of PDL in dB = x_{PDL} in the notation of [Wang and Menyuk, JLT 2001, above Eq (6)].

The method also sets ObjectInitialized = 1.

See also:
ReduPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp ,double PolDepAttenuationXTmp ,double PolDepAttenuationYTmp)

ReduPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp)
void SetPolDepAttenuationX(double PolDepAttenuationXTmp)
void SetPolDepAttenuationY(double PolDepAttenuationYTmp)

References ObjectInitialized, SetPolDepAttenuationX(), and SetPolDepAttenuationY().

Referenced by ReduOptAmplifier::ReduOptAmplifier(), ReduPolDepAttenuator(), and PolDepAttenuator::SetPolDepAttenuation().

void ReduPolDepAttenuator::SetPolDepAttenuationX ( double  PolDepAttenuationXTmp  ) 

Sets the PDL in the X direction.

Parameters:
PolDepAttenuationXTmp is in dB

The factor of 1/2 comes from the fact that the LinearPolDepAttenuationX acts on the field, not on the power.

See also:
void SetPolDepAttenuationY(double PolDepAttenuationYTmp)
void GetTransmMatrixCoefficients(void)
void PolDepAttenuate(void)

References dB2Linear(), GetTransmMatrixCoefficients(), and LinearPolDepAttenuationX.

Referenced by ReduOptAmplifier::AddPolDepGainEffect(), and SetPolDepAttenuation().

void ReduPolDepAttenuator::SetPolDepAttenuationY ( double  PolDepAttenuationYTmp  ) 

Sets the PDL in the Y direction.

Parameters:
PolDepAttenuationYTmp is in dB

The factor of 1/2 comes from the fact that the LinearPolDepAttenuationY acts on the field, not on the power.

See also:
void SetPolDepAttenuationX(double PolDepAttenuationYTmp)
void GetTransmMatrixCoefficients(void)
void PolDepAttenuate(void)

References dB2Linear(), GetTransmMatrixCoefficients(), and LinearPolDepAttenuationY.

Referenced by SetPolDepAttenuation().

void ReduPolDepAttenuator::SyncNumChannels ( void   ) 

Synchronizes the class parameter NumChannels with the corresponding parameter in oReduOptSignal.

Used when sweep over the number of channels.

References ReduOptSignal::GetNumChannels(), NumChannels, and oReduOptSignal.

Referenced by ReduOptAmplifier::SyncNumChannels().


Member Data Documentation

The amount of loss of field-amplitude due to PDL on a linear scale in the X dircetion in Jones space

See also:
ReduPolDepAttenuator::SetPolDepAttenuationY( double PolDepAttenuationYTmp)

Referenced by GetLinearPolDepAttenuationPowerX(), GetPolDepAttenuationPowerX(), GetTransmMatrixCoefficients(), and SetPolDepAttenuationX().

in the Y dircetion in Jones space

The amount of loss of field-amplitude due to PDL on a linear scale

See also:
ReduPolDepAttenuator::SetPolDepAttenuationY( double PolDepAttenuationYTmp)

Referenced by GetLinearPolDepAttenuationPowerY(), GetPolDepAttenuationPowerY(), GetTransmMatrixCoefficients(), and SetPolDepAttenuationY().

The number of channels of oReduOptSignal.

Referenced by PolDepAttenuate(), and SyncNumChannels().

A pointer to the ReduOptSignal object to be transmitted through the PDL element.

Referenced by PolDepAttenuate(), and SyncNumChannels().

double ReduPolDepAttenuator::Tm00 [private]

The nonzero entries of the 4 by 4 PDL transmission matrix that acts on the 4 Stokes prameters.

See also:
void GetTransmMatrixCoefficients(void)

Referenced by GetTransmMatrixCoefficients(), and PolDepAttenuate().

double ReduPolDepAttenuator::Tm01 [private]
double ReduPolDepAttenuator::Tm22 [private]

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