• Main Page
  • Related Pages
  • Classes
  • Files
  • File List
  • File Members

MachZehnder.hh

Go to the documentation of this file.
00001 // $Id: MachZehnder.hh,v 1.2 2008/08/08 02:19:51 zweck Exp $
00002 
00003 //###################################################################
00004 //
00005 //           Optical Communication Systems Simulator
00006 //
00007 //       Copyright (2000):
00008 //       Optical Fiber Communications Laboratory (OFCL)
00009 //       Computer Science & Electrical Engineering Department (CSEE)
00010 //       University of Maryland Baltimore County (UMBC)
00011 //
00012 //###################################################################
00013 
00014 #ifndef _MACH_ZEHNDER_
00015 #define _MACH_ZEHNDER_
00016 
00017 #include "ocsOptSignal.hh"
00018 #include "ocsElecFilter.hh"
00019 
00020 
00021 enum typeMachZehnder { BINARY_DATA_PERFECT_RECT = 1,
00022                        BINARY_DATA_ARCTANH_SMOOTHING = 2,
00023                        BINARY_DATA_SUPERGAUSS_SMOOTHING = 3,
00024                        SINUSOIDAL_SIGNAL = 4 };
00025 
00026 
00027 class MachZehnder
00028 {
00029 
00030 public:
00031 
00032 MachZehnder(string InFileName, OptSignal * oOptSignal2);
00033 
00034 void GeneratePerfectRectBinaryElecData(int ChannelArrayIndex);
00035 void GenerateSmoothedRectBinaryElecDataArctanh(int ChannelArrayIndex);
00036 void GenerateSmoothedRectBinaryElecDataSuperGauss(int ChannelArrayIndex);
00037 void GenerateSinusoidalElecSignal(int ChannelArrayIndex);
00038 
00039 double SuperGauss(double Time);
00040 
00041 void FilterBinaryElecData(void);
00042 
00043 void MZModulator(void);
00044 void PhaseModulator(void);
00045 
00046 double EAM34PulseShape(double TimeRelPulseCenter);
00047 double EAMPoly(double time);
00048 
00049 
00050 void WriteFileTimePower(string outFile);
00051 void WriteFileFreqPower(string outFile);
00052 
00053   typeMachZehnder GetTypeMachZehnder(void) { return TypeMachZehnder; };
00054 
00055 
00056 private:
00057 
00058 typeMachZehnder TypeMachZehnder;
00059 
00060 BitString * oBitString;
00061 OptSignal * oOptSignal;
00062 ElecFilter * oElecFilter;
00063 
00064 cfftw * fft;
00065 fftPowerMatrices sfftPM;
00066 fftMatrices sfftM; 
00067 
00068 typeSimulation TypeSimulation;
00069 
00070 int NumChannels;
00071 double CenterFreq;
00072 
00073 double BitLength; // The time length in seconds of a bit
00074 double BitRateChann;
00075 
00076 int StringLength;
00077 double OptPowerChann;
00078 
00079 int qtPoints;
00080 double TimeWindow,DeltaTime;
00081 double FreqWindow,DeltaFreq;  
00082       
00083 double V_pi, V_pi1, V_pi2;
00084 double Phi_10,Phi_20;
00085 double DeltaPhaseModulator;
00086 double OptModulationDepth;
00087 double SlopeFactor;
00088 double ShiftAmt;
00089 bool ChirpFreeFlag;
00090 
00091 int SuperGaussExponent;
00092 
00093 int RandomPolarizationFlag;
00094 
00095   // Parameters for UMBC_RZ
00096 
00097 bool DoEOMFlag;
00098 bool EAMWithHump;
00099 
00100 };
00101 
00102 #endif /* _MACH_ZEHNDER_ */
00103 
00104 
00105 
00106 

Generated on Fri Jul 2 2010 12:57:46 for OCS by  doxygen 1.7.1