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_REDU_POL_DEP_ATTENUATOR_HH_ 00014 #define _OCS_REDU_POL_DEP_ATTENUATOR_HH_ 00015 00016 #include "ocsReduOptSignal.hh" 00017 00018 // ############################################## 00019 // #### Classes of objects for the reduced model 00020 // ############################################## 00021 00022 // #### Class ReduPolDepAttenuator 00023 00026 00052 class ReduPolDepAttenuator 00053 { 00054 public: 00055 00056 00058 00061 ReduPolDepAttenuator() {ObjectInitialized = 0;}; 00062 00064 00080 ReduPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp); 00081 00083 00101 ReduPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp 00102 ,double PolDepAttenuationXTmp 00103 ,double PolDepAttenuationYTmp); 00104 00106 00118 void InitPolDepAttenuator(ReduOptSignal *oReduOptSignalTmp); 00119 00121 00138 void SetPolDepAttenuation(double PolDepAttenuationXTmp 00139 ,double PolDepAttenuationYTmp); 00140 00142 00154 void SetPolDepAttenuationX(double PolDepAttenuationXTmp); 00155 00157 00168 void SetPolDepAttenuationY(double PolDepAttenuationYTmp); 00169 00172 00173 double GetPolDepAttenuationPowerX(void) 00174 {return -Linear2dB(sq(LinearPolDepAttenuationX));}; 00175 00178 00179 double GetPolDepAttenuationPowerY(void) 00180 {return -Linear2dB(sq(LinearPolDepAttenuationY));}; 00181 00182 00185 00186 double GetLinearPolDepAttenuationPowerX(void) 00187 {return sq(LinearPolDepAttenuationX);}; 00188 00191 00192 double GetLinearPolDepAttenuationPowerY(void) 00193 {return sq(LinearPolDepAttenuationY);}; 00194 00197 00211 void GetTransmMatrixCoefficients(void); 00212 00215 00219 void SyncNumChannels(void); 00220 00222 00231 void PolDepAttenuate(void); 00232 00233 private: 00234 int ObjectInitialized; 00237 00238 ReduOptSignal *oReduOptSignal; 00239 00241 00242 double NumChannels; 00243 00246 00250 double LinearPolDepAttenuationX; 00251 00254 00258 double LinearPolDepAttenuationY; 00259 00262 00266 double Tm00,Tm01,Tm22; 00267 00268 00269 }; 00270 00271 #endif //_OCS_REDU_POL_DEP_ATTENUATOR_HH_ 00272 00273 00274 00275 00276 00277 00278 00279 00280 00281