00001 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef TDSPOFDM_H 00019 #define TDSPOFDM_H 00020 00021 #include <TDSPBlockfft.h> 00022 00028 class TDSPOfdm : public TDSPBlockfft { 00029 00030 00031 Bool_t fAutoEqualization; 00032 TDSPVector *fEqualization; 00033 00034 public: 00035 TDSPOfdm(char *name = NULL); 00036 ~TDSPOfdm(); 00037 00038 Int_t GetNumCarriers() { return GetBlockLen(); }; 00039 void SetNumCarriers(Int_t n) { SetBlockLen(n); }; 00040 00041 void SetEqualization(TDSPVector *e); 00042 TDSPVector* GetEqualization() const { return fEqualization;}; 00043 00044 00045 // Setting Options 00046 // opt="autoequalization" - switch on autoequalization 00047 00048 void SetOption(Option_t *opt); 00049 00050 TDSPSignal* GetTransmitSignal() { return GetIFFTSignal(); }; 00051 TDSPSignal* GetReceivedSignal() { return GetFFTSignal(); }; 00052 Double_t GetBandWidthEfficiency() { return Double_t(GetNumCarriers())/Double_t(GetBlockLen()+fCyclicPrefix);}; 00053 00054 00055 virtual Bool_t CalcEqualization(TDSPVector *r); 00056 virtual void EqualizeMe(TDSPVector*in=NULL); 00057 virtual TDSPSignal* Receive(TDSPSignal* in); 00058 virtual TDSPSignal* Transmit(TDSPSignal* in); 00059 void Received(TDSPSignal*); 00060 void Transmitted(TDSPSignal*); 00061 ClassDef(TDSPOfdm,1) 00062 00063 }; 00064 00065 inline void TDSPOfdm::Received(TDSPSignal *r) { 00066 Emit("Received(TDSPSignal*)",r); 00067 } 00068 00069 inline void TDSPOfdm::Transmitted(TDSPSignal *r) { 00070 Emit("Transmitted(TDSPSignal*)",r); 00071 } 00072 00073 #endif
1.3.2