Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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
00032
00033 public:
00034
00035
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
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