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

ocsReceiverSemiAnalytical.hh

Go to the documentation of this file.
00001 // $Id:
00002 
00003 //###################################################################
00004 //
00005 //           Optical Communication Systems Simulator
00006 //
00007 //       Copyright (2003):
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 _OCS_RECEIVER_SEMI_ANALYTICAL_HH_
00015 #define _OCS_RECEIVER_SEMI_ANALYTICAL_HH_
00016 
00017 #include "ocsOptSignal.hh"
00018 #include "ocsOptFilter.hh"
00019 #include "ocsOptDemuxer.hh"
00020 #include "ocsPhotodetector.hh"
00021 #include "ocsElecFilter.hh"
00022 #include "ocsHistogram2D.hh"
00023 #include "ocsElecSignalStat.hh"
00024 #include "ocsOptDataWriter.hh"
00025 
00026 enum typeReceiver { MONTE_CARLO = 1, SEMI_ANALYTICAL = 2 };
00027 
00028 class ReceiverSemiAnalytical
00029 {
00030 
00031   // ########### Public Methods ###################
00032 
00033 public:
00034 
00035   // Written by John Zweck, April 2003
00036 
00039 
00040   ReceiverSemiAnalytical();  
00041   
00042   ReceiverSemiAnalytical(typeReceiver TypeReceiver2,
00043                          OptSignal * WDMSignal,
00044                          RanNumGen *RNG2,
00045                          int DemuxChannArrayIndex2,
00046                          string InDir, 
00047                          string Job2);
00048                               
00050 
00051   void ReceiverSemiAnalyticalInit(OptSignal * WDMSignal,
00052                              RanNumGen *RNG2,
00053                              string InDir, 
00054                              string Job2, 
00055                              int DemuxChannArrayIndex2,
00056                              fftPowerMatrices & sfftPM2,
00057                              fftPowerMatrices & WorksfftPM2,
00058                              OptSignal * GlobalSCSignal,  
00059                              OptDemuxer *Demuxer2);
00060 
00061   void SetReceiverMapNumber(int Value) { RecMapNum = Value;};
00062   void SetJobName(string Name) { Job = Name;};
00063 
00064   void SetDemuxChannArrayIndex(int Value) { DemuxChannArrayIndex = Value;};
00065 
00066   string WriteTypeReceiver(void);
00067 
00068   ~ReceiverSemiAnalytical();
00069 
00072 
00073   void ReceiveSignalBackToBack(void);
00074 
00075   void ReceiveSignalBackToBackMonteCarlo(void);
00076   
00078 
00079   void ReceiveSignal(int MapNum);
00080 
00082   void ReceiveSignal(int MapNum,int MonteCarloSystemRealizationNum);
00083   void ReceiveSignalMonteCarlo(int MapNum,int MonteCarloSystemRealizationNum);
00084   void ReceiveSignalSemiAnalytical(string FileID);
00085 
00086   void PostProcessReceiverStats(int MapNum,int MonteCarloSystemRealizationNum,
00087                                 double PropagatedLength,int AppendFlag);
00088 
00089   void WriteStats(int MapNum,int MonteCarloSystemRealizationNum,
00090                    double PropagatedLength,int AppendFlag);
00091 
00092   void WriteNoiseFreeOpticalSignalFreq(string OutFileName);
00093 
00094   void GetLimaParameters(bool AppendOutFileFlag,
00095                          double FreqFWHM_OptFilter, 
00096                          double FreqFWHM_ElecFilter,double OSA_Bandwidth);
00097 
00098 
00099   // ########## Data ###########
00100 
00101 public:
00102 
00103   OptSignal * WDMSignal;
00104   OptSignal * SingleChannelSignal;
00105 
00106   OptFilter * TunableOptFilter;
00107   OptDemuxer *oOptDemuxer;
00108 
00109   Photodetector * oPhotodetector;
00110   ElecFilter * oElecFilter;
00111 
00112   ElecSignalStat * oElecSignalStat;
00113   Histogram2D *EyeDiagramMonteCarlo;
00114 
00115 private:
00116 
00117   typeReceiver TypeReceiver;
00118 
00119   int DemuxChannArrayIndex;
00120   string Job;
00121   int RecMapNum;
00122 
00123   int ObjectInitialized;
00124 
00125   double * StdDev_Signal_ASE;
00126 
00127 };
00128 
00129 #endif  
00130 
00131 
00132 
00133 

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