Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

TDSPWssus.h

Go to the documentation of this file.
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 TDSPWSSUS_H
00019 #define TDSPWSSUS_H
00020 
00021 #include <TDSPVector.h>
00022 #include <TDSPMatrix.h>
00023 #include <TDSPLTVChannel.h>
00024 
00029 class TDSPWssus : public TDSPLTVChannel  {
00030  protected:
00031 
00032   Int_t       fType; 
00033 
00034   TDSPMatrix* fTransferFunction; 
00035   TDSPMatrix* fScatteringFunction; 
00036   TDSPMatrix* fSpreadingFunction; 
00037 
00038   Double_t    fMaxDoppler;    
00039   Double_t    fCarrierFreq;   
00040   Double_t    fSymbolRate; 
00041   Double_t    fOverSampling; 
00042 
00043   Double_t    fExpDecay; 
00044   Double_t    fMaxDelay; 
00045 
00046 
00047   static TDSPMatrix* 
00048     ScatFunction(Int_t     type,
00049          Double_t  alpha,
00050          Double_t  beta,
00051          UInt_t    t0,
00052          UInt_t    f0,
00053          UInt_t    clen,
00054          TDSPMatrix *ScatFun=NULL);
00055 
00056   static TDSPMatrix*
00057     TapFunction(TDSPMatrix *ScatFun,       // The Scattering Matrix
00058         UInt_t      tlen,          // Maximum Time Delay
00059         UInt_t      flen,          // Maximum Doppler Shift
00060         UInt_t      TapFunLen,     // The length of the tapfunction
00061         TDSPMatrix *TapFun=NULL);  // The tapfun itself
00062   
00063  public: 
00064   TDSPWssus(char *name = NULL);
00065   ~TDSPWssus();
00066   
00067   // Setting Options
00068   //
00069   // jakes - jakes spectrum
00070   // flat  - flat spectrum
00071   // or - see more : TDSPLTVChannel::SetOption(..)
00072 
00073   void               SetOption(Option_t *opt); 
00074   
00075   void               SetSymbolRate(Double_t s) { fSymbolRate=s;};
00076   void               SetSymbolRateMHz(Double_t s) { SetSymbolRate(s*1.0e6);};
00077   void               SetOverSampling(Double_t s) { fOverSampling=s;};
00078   void               SetMaxDoppler(Double_t d) { fMaxDoppler=d;};
00079   void               SetSpeed(Double_t v) { SetMaxDoppler(v/3.0e8*fCarrierFreq);}; 
00080   void               SetSpeedKMH(Double_t v) { SetSpeed(v*1000./3600.);}; 
00081   void               SetCarrierFrequency(Double_t f) { fCarrierFreq=f;}; 
00082   void               SetCarrierFrequencyMHz(Double_t f) { SetCarrierFrequency(f*1.0e6); }; 
00083   void               SetCarrierFrequencyGHz(Double_t f) { SetCarrierFrequency(f*1.0e9); }; 
00084   void               SetExpDecay(Double_t al) { fExpDecay = al;}; 
00085   void               SetExpDecayMHz(Double_t al) { SetExpDecay(al*1.0e6);}; 
00086   void               SetMaxDelay(Double_t md) { fMaxDelay = md;}; 
00087   void               SetMaxDelayMus(Double_t md) { SetMaxDelay(md/1.0e6);}; 
00088 
00089   Double_t           GetSamplePeriod() { return 1./GetSamplingRate();}; 
00090   Double_t           GetSamplePeriodMus() { return 1./GetSamplingRateMHz();}; 
00091   Double_t           GetSymbolPeriod() { return 1./GetSymbolRate();}; 
00092   Double_t           GetSymbolPeriodMus() { return 1./GetSymbolRateMHz();}; 
00093   Double_t           GetMaxDelay() const { return fMaxDelay;};
00094   Double_t           GetMaxDelayMus() { return fMaxDelay*1.0e6;} 
00095   Double_t           GetExpDecay() const { return fExpDecay;}; 
00096   Double_t           GetExpDecayMHz() const { return fExpDecay/1.0e6;}; 
00097   Double_t           GetSymbolRate() const { return fSymbolRate;};
00098   Double_t           GetSymbolRateMHz() { return GetSymbolRate()/1.0e6;};
00099   Double_t           GetSamplingRate() { return GetSymbolRate()*fOverSampling;};
00100   Double_t           GetSamplingRateMHz() { return GetSymbolRateMHz()*fOverSampling;};
00101   Double_t           GetOverSampling() const { return fOverSampling;};
00102   Double_t           GetMaxDoppler() const { return fMaxDoppler;};
00103   Double_t           GetSpeed() { return fMaxDoppler*3.0e8/fCarrierFreq;};
00104   Double_t           GetSpeedKMH() { return GetSpeed()/1000.*3600.;};
00105   Double_t           GetCarrierFrequency() const { return fCarrierFreq;};
00106   Double_t           GetCarrierFrequencyMHz() { return GetCarrierFrequency()/1.0e6;};
00107   Double_t           GetCarrierFrequencyGHz() { return GetCarrierFrequency()/1.0e9;};
00108   Int_t              GuessChannelBlockLen(); 
00109   // Discrete Variables 
00110 
00111   Int_t    GetDiscreteMaxDelay()   {return TMath::Nint(TMath::Max(GetMaxDelay()*GetSamplingRate(),1.));};
00112   Double_t GetDiscreteExpDecay()   {return GetExpDecay()/GetSamplingRate();};
00113   Int_t    GetDiscreteMaxDoppler() {return TMath::Nint(TMath::Max(GetMaxDoppler(),1.));};
00114   Int_t    GetDiscreteScatteringMatrixSize(); 
00115   
00116 
00117   TDSPMatrix*        GetTransferFunction(); 
00118   TDSPMatrix*        GetScatteringFunction(); 
00119   TDSPMatrix*        GetSpreadingFunction();  
00120   TDSPMatrix*        CreateTransferFunction(TDSPMatrix *out=NULL); 
00121   TDSPMatrix*        CreateScatteringFunction(TDSPMatrix *out=NULL); 
00122   TDSPMatrix*        CreateSpreadingFunction(TDSPMatrix *out=NULL); 
00123   virtual TDSPMatrix*CreateImpulseResponse(TDSPMatrix *out=NULL); 
00124 
00125   Bool_t   fHaveScatteringFunction; 
00126   Bool_t   fHaveTransferFunction; 
00127   Bool_t   fHaveSpreadingFunction; 
00128 
00129 
00130   
00131 
00132   virtual void        ChangeRepresentation(); 
00133 
00134   
00135 
00136   virtual void        Draw(Option_t *o="");
00137   virtual void        Print();
00138   
00139   ClassDef(TDSPWssus,1)
00140 
00141 };
00142 
00143 #endif

Generated on Fri Apr 23 16:23:44 2004 by doxygen 1.3.2