00001 // $Id: 00002 //################################################################### 00003 // 00004 // Optical Communication Systems Simulator 00005 // 00006 // Copyright (2000): 00007 // Optical Fiber Communications Laboratory (OFCL) 00008 // Computer Science & Electrical Engineering Department (CSEE) 00009 // University of Maryland Baltimore County (UMBC) 00010 // 00011 //################################################################### 00012 00013 #ifndef _OCS_POL_DEP_ATTENUATOR_HH_ 00014 #define _OCS_POL_DEP_ATTENUATOR_HH_ 00015 00016 #include "ocsOptSignal.hh" 00017 #include "ocsReduPolDepAttenuator.hh" 00018 00019 // ##### Input parameter to initialize Pol. Dep. Loss Sources 00020 //struct PolDepAttenuatorParam 00021 //{ 00022 // //int PolDepLossType; 00023 // double PolDepAttenuation; 00024 // double StokesMaxAttenuation[4]; 00025 //}; 00026 00027 // #### Class PolDepAttenuator 00028 00030 00037 class PolDepAttenuator 00038 { 00039 public: 00040 PolDepAttenuator() {ObjectInitialized = 0;}; 00041 PolDepAttenuator(string InFileName, 00042 OptSignal *oOptSignalTmp); 00043 PolDepAttenuator(OptSignal *oOptSignalTmp); 00044 PolDepAttenuator(OptSignal *oOptSignalTmp 00045 ,double PolDepAttenuationX_Tmp 00046 ,double PolDepAttenuationY_Tmp); 00047 void InitPolDepAttenuator(OptSignal *oOptSignalTmp); 00048 void SetPolDepAttenuation(double PolDepAttenuationX_Tmp 00049 ,double PolDepAttenuationY_Tmp); 00050 void SetPolDepAttenuationX(double PolDepAttenuationX_Tmp); 00051 void SetPolDepAttenuationY(double PolDepAttenuationY_Tmp); 00052 void SwitchOptSignalData(OptSignal *oOptSignal2); 00053 //void GetTransmMatrixCoefficients(void); 00054 //void SyncNumChannels(void); 00055 void PolDepAttenuate(void); 00056 00057 // added by Hai 7-1-03 00058 void UpdateJonesMatrixPDL(void); 00059 00060 00061 private: 00062 int ObjectInitialized; 00063 OptSignal *oOptSignal; 00064 //double NumChannels; 00065 double LinearPolDepAttenuationX; 00066 double LinearPolDepAttenuationY; 00067 int qtPoints; 00068 //double StokesSignalTmp[4]; 00069 //double StokesNoiseTmp[4]; 00070 double Tm00,Tm01,Tm22; 00071 00072 // added by Hai 7-1-03 00073 cplx *JonesMatrix; //added by Hai 7-1-03 00074 int NumberOfChannels; //added by Hai 7-1-03 00075 00076 ReduPolDepAttenuator * oReduPolDepAttenuator; 00077 00078 }; 00079 00080 #endif //_OCS_POL_DEP_ATTENUATOR_HH_